VBA Excel : compar. chaine caract. partielle

Résolu/Fermé
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 6 juil. 2011 à 17:04
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 - 6 juil. 2011 à 18:17
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 ?
A voir également:

2 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
6 juil. 2011 à 18:07
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
Eaheru Messages postés 197 Date d'inscription mercredi 23 juin 2010 Statut Membre Dernière intervention 12 mars 2018 20
6 juil. 2011 à 18:17
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