VBA Excel : compar. chaine caract. partielle

Résolu
Eaheru Messages postés 205 Statut Membre -  
Eaheru Messages postés 205 Statut Membre -
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. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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
  2. Eaheru Messages postés 205 Statut Membre 20
     
    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