VBA Excel : compar. chaine caract. partielle

Résolu
Bonjour,

Je cherche a comparer 2 séries de chaines de caractères situées sur 2 onglets différents.
La première pouvant être partiellement comprise dans la deuxième, par exemple :

Toto serait la racine de Toto*123456
La différence se situe toujours après une "*"

j'ai tenté comme suit, mais ca ne fonctionne pas :

For Each cel1 In ws1.Range("C2:C" & derlig1)
        For Each cel2 In ws2.Range("C2:C" & derlig2)
            If cel2.Value Like cel1.Value & "*" Then
                ws1.Rows(cel1.Row & ":" & cel1.Row).Copy
                ws7.Select
                    Cells(cel7, 1).Select
                        ActiveSheet.Paste
                            cel7 = cel7 + 1
            End If
        Next cel2
next cel1


Auriez vous une idée de mon erreur svp ?

2 réponses

  1. Bonsoir Pilas31,

    Merci de ton intervention. J'ai trouvé la solution à mon probleme en codant ceci :
    If (cel6.Value Like cel1.Value) Or (InStr(cel1, cel6)) Then
        ws1.Rows(cel1.Row & ":" & cel1.Row).Copy
                    ws7.Select
                        Cells(cel7, 1).Select
                            ActiveSheet.Paste
                                cel7 = cel7 + 1
                End If
            Next cel2
    next cel1
    
    Et ça fonctionne :)
    
    Merci pour ta proposition de simplification d'écriture, je vais m'en servir illico !
    
    
    0
    1. Contributeur
      Bonjour,

      "ça ne fonctionne pas" . Si cela signifie qu'il y a une erreur (de compilation par exemple) c'est peut-être à cause des déclarations et des initialisations des variables.

      Il faut vérifier si dans la macro il y a bien des déclarations du type :
      Dim ws1 As Worksheet, ws2 As Worksheet, ws7 As Worksheet
      Dim cel1 As Range, cel2 As Range
      derlig1 = 10
      derlig2 = 10
      Set ws1 = Sheets("Feuil1")
      Set ws2 = Sheets("Feuil2")
      Set ws7 = Sheets("Feuil3")
      cel7 = 2
      


      sinon nous préciser de quel type d'erreur il s'agit.

      une remarque de détail :
      ws1.Rows(cel1.Row & ":" & cel1.Row).Copy peut être simplifié en écrivant :
      ws1.Rows(cel1.Row).Copy

      A+

      0