Comparaison de chaines de caractères Excel avec boucles en VBA - Pb code

  • Initiateur de la discussion Initiateur de la discussion PJ7
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

PJ7

XLDnaute Nouveau
Bonjour,

Je souhaite récupérer, en VBA (excel 97, windows XP) les données de la colonne "C" de "Feuil2" d'un classeur, dans la colonne "C" de "Feuil1" du même classeur, lorsque la chaine de caractères composée des données de la colonne "A" et "B" de "Feuil1" est égale à la chaine de caractères composée des données des colonnes "A" et "B" de "Feuil2". Je précise qu'il n'y a pas toujours de données dans la colonne "C" de "Feuil2". Le code que j'ai élaboré ne fonctionne pas (Cf. macro + données en pièce jointe). Je ne suis pas un spécialiste des boucles. Merci de votre indulgence.

Par avance merci🙂
 

Pièces jointes

Re : Comparaison de chaines de caractères Excel avec boucles en VBA - Pb code

Bonjour PJ7et bienvenu 🙂

Ne pouvant pas tester le code sur Excel 97, j'ai modifié votre code au minimum. Essayez le code suivant:
VB:
Sub comparaison_identique()
Dim compteur1 As Long, compteur2 As Long
Dim chaine1 As String, chaine2 As String

For compteur1 = 5 To 16
  chaine1 = Sheets("Feuil1").Range("A" & compteur1)
  chaine2 = Sheets("Feuil1").Range("B" & compteur1)
  'on peut, si on le désire, effacer ou non les anciens contenus de la colonne C
  ' passer la ligne suivante en commentaire ou non suivant le cas.
  Sheets("Feuil1").Range("C" & compteur1) = ""
  For compteur2 = 2 To 11
    If chaine1 = Sheets("Feuil2").Range("A" & compteur2) And chaine2 = Sheets("Feuil2").Range("B" & compteur2) Then
      Sheets("Feuil1").Range("C" & compteur1) = Sheets("Feuil2").Range("C" & compteur2)
      Exit For
    End If
  Next compteur2
Next compteur1

End Sub

nb: Attention à la comparaison par concaténation. Supposons qu'en Feuil1 se trouve une ligne avec "ABCDE" en colonne A et avec "FGH" en colonne B. Le concatenation donne "ABCDEFGH".
Si en Feuil2 vous avez une ligne avec "ABC" en A et avec "CDEFGH" en B alors la concaténation donne également :"ABCDEFGH".

La comparaison des deux donne un résulat VRAI alors que les quatre cellules sont différentes. Suivant ce qu'on veut comparer, le résultat renvoyé peut donc être erroné.
 
Dernière édition:
Re : Comparaison de chaines de caractères Excel avec boucles en VBA - Pb code

bonjour Pj7,mapomme
une autre proposition
tu peux mettre option compare texte(en début de code,avant 1ère procédure)
ou ucase(chaine1)=ucase(chaine2)

Code:
Sub comparaison_identique()

    Dim compteur1 As Long, compteur2 As Long
    Dim chaine1 As String, chaine2 As String

    For compteur1 = 2 To 11
        With Sheets("Feuil2")
            If .Range("C" & compteur1) <> "" Then chaine1 = .Range("A" & compteur1) & "-" & .Range("B" & compteur1)
        End With
        
        If chaine1 <> "" Then
            For compteur2 = 5 To 16
                With Sheets("Feuil1")
                    chaine2 = .Range("A" & compteur2) & "-" & .Range("B" & compteur2)
                    If chaine1 = chaine2 Then
                        .Range("C" & compteur2) = Sheets("Feuil2").Range("C" & compteur1)
                    End If
                End With
            Next compteur2
        End If
        
        chaine1 = ""
    Next compteur1

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
646
Retour