VBA Excel : compar. chaine caract. partielle
Résolu
Eaheru
Messages postés
197
Date d'inscription
Statut
Membre
Dernière intervention
-
Eaheru Messages postés 197 Date d'inscription Statut Membre Dernière intervention -
Eaheru Messages postés 197 Date d'inscription Statut Membre Dernière intervention -
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 ?
A voir également:
- VBA Excel : compar. chaine caract. partielle
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
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 :
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+
"ç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 :
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 !