VBA Excel : compar. chaine caract. partielle
Résolu
Eaheru
Messages postés
205
Statut
Membre
-
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 :
Auriez vous une idée de mon erreur svp ?
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
-
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+
-
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 !