Vba - comparer phrase & mot

Résolu
Tehani_t Messages postés 245 Statut Membre -  
Tehani_t Messages postés 245 Statut Membre -
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

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    1. Tehani_t Messages postés 245 Statut Membre 21
       
      Bonjour eriiic !

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

      a bientot !
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    2. Tehani_t Messages postés 245 Statut Membre 21
       
      je vais tester, merci bcp!!
      0
    3. Tehani_t Messages postés 245 Statut Membre 21
       
      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
    4. Tehani_t Messages postés 245 Statut Membre 21
       
      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
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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