Vba - comparer phrase & mot

Résolu/Fermé
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 3 mars 2011 à 01:58
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 - 15 mars 2011 à 01:22
Bonjour tout le monde,

Un petit souci avec les comparaisons,

J'ai une colonne A avec des métiers, ex : Chef de département, Chef de cellule, Adjoint au chef de cellule, etc ...
et une autre colonne ETAT (non renseignée)

Dans une autre feuille, j'ai une liste de mots clés, ex : Chef, Responsable, etc

LE BUT : si on retrouve un des mots clés dans la colonne A, alors ETAT="OK"

voici le code :

Dim row As Integer
Dim word As Integer
Dim found As Boolean

For row = 2 To 10
found = False
For i = 1 To 10
found = found Or Not Sheets("compil_fonction").Cells(row, 1).Find(Sheets("mot_clef").Cells(i, 2)) Is Nothing
Next
MsgBox (found)
If found Then
Sheets("compil_fonction").Cells(row, 10).Value = "OK"
Else
Sheets("compil_fonction").Cells(row, 10).Value = ""
End If
Next row

J'ai lancé ce code, mais rien ne s'affiche dans ma colonne ETAT, pourtant je retrouve bien des mots clés dans la colonne A.

Qui peut m'aider ?

Merci par avance !!!

2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
3 mars 2011 à 07:57
Bonjour,

Avec les titres en Feuil2!A1:A2, à adapter à ton cas :
ActiveCell.Offset(0, 1) = ""
For i = 1 To 2
    If InStr(ActiveCell.Value, Worksheets("Feuil2").Cells(i, 1).Value) > 0 Then
        ActiveCell.Offset(0, 1) = "OK"
        Exit For
    End If
Next i


eric
0
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
4 mars 2011 à 22:06
Bonjour eriiic !

Je suis en train de tester mais j'ai un peu de mal ...

a bientot !
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
4 mars 2011 à 23:48
Bonsoir,

J'ai essayé d'adapter à ton code, je te laisse tester :
Dim c1 as range, lig as long, i as long
For lig = 2 To 10
    Set c1 = Sheets("compil_fonction").Cells(lig, 1)
    c1.Offset(0, 1) = ""
    For i = 1 To 2 ' allonger la liste des mots-clés
        If InStr(c1.Value, Sheets("mot_clef").Cells(i, 2).Value) > 0 Then
            c1.Offset(0, 1) = "OK"
            Exit For
     End If
    Next i
Next lig


Evite d'utiliser des mots-clés vba comme nom de variable (row par exemple)

eric
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
5 mars 2011 à 09:48
Bonjour,
Bonjour Eric,
Ti problème avec Inst, ne trouvera pas Chef/chef
Je verrais plutôt..
'A mettre en haut du module.
Option Compare Text

Sub Comparer()
Dim ligS As Long, LigC As Long
    Sheets("compil_fonction").Select
    For LigC = 1 To Range("A65536").End(xlUp).Row
        With Sheets("mot_cle")
            For ligS = 1 To .Range("A65536").End(xlUp).Row
                If Cells(LigC, 1) Like "*" & .Cells(ligS, 1) & "*" Then
                    Cells(LigC, 2) = "OK": Exit For
                End If
            Next ligS
        End With
    Next LigC
End Sub

A+
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
5 mars 2011 à 11:48
Salut lermite,

Bonne remarque.
A noter qu'on aurait pu aussi convertir en minuscule les 2 chaines avec lcase()
Et tu as été plus loin dans le code, il est plus complet.

eric
0
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
7 mars 2011 à 19:41
je vais tester, merci bcp!!
0
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
8 mars 2011 à 00:48
Je viens tout juste de tester, et ca fonctionne mais pas pour tous les mots cles.
C'est a dire, le code repère bien le premier mot de "mot_clef" qui est "Chef" et mets bien "OK" dans la colonne ETAT. Mais, rien ne se passe pour les autres mots clefs, c'est a dire, que meme si les autres mots clefs sont bien présents dans les cellules, le "OK" n'apparait pas.
0
Tehani_t Messages postés 240 Date d'inscription mercredi 14 juillet 2010 Statut Membre Dernière intervention 20 décembre 2011 21
8 mars 2011 à 00:52
Voila ce qui se passe, dans ma feuille "mot_clef" en colonne A, j'ai ma liste de mots clefs, on trouve le premier mot clef à la ligne 1, donc pas de titre.

Le programme ne base sa recherche uniquement sur le premier mot de ma liste de mots clef
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
Modifié par eriiic le 8/03/2011 à 06:59
Bonjour,

Tu as dû te tromper qcq part...
http://www.cijoint.fr/cjlink.php?file=cj201103/cijNb2sg5l.xls

eric

PS: option compare text fonctionne aussi avec instr
0