Comparaison de 2 colonne + résultat dans la 3eme [Fermé]

Signaler
-
 Grandeguele -
Bonjour,

Après avoir passer plusieurs heure sur les forums, j'ai réussi a comparer 2 colonne et retranscrire les différences dans une 3ème, cependant je souhaiterais qu'elles ne se mettent pas au début de la colonne 3 mais reste en face de l'endroit ou la modification appairait.
A B C
shf shf AAA
shf shf ABCD
hssg AAA AZED
sh hssg
546 sh
21 546
ABC 21
AZE ABCD
ABD AZED

j'ai donc utiliser le code VBA pour avoir la colonne C.

Sub Bouton1_Cliquer()
Dim Colonne1 As Range, Colonne2 As Range, cellule As Range, Trouve As Range, suite As Range

'Compare les colonne A et B de la feuilles 1
Set Colonne2 = Range(("A2"), Range("A2").End(xlDown))
Set Colonne1 = Range(("B2"), Range("B2").End(xlDown))

'Efface la plage de réception
Range("C2:C65536").ClearContents

'Retranscrit les données différente dans la colonne 3
For Each cellule In Colonne1
Set suite = [C65536].End(xlUp).Offset(1, 0)
Set Trouve = Colonne2.Find(cellule.Value, LookIn:=xlValues, lookat:=xlWhole)
If Trouve Is Nothing Then suite.Value = cellule.Value
Next
End Sub


je souhaiterais obtenir le résultat suivant et si possible mettre un fond rouge sur les éléments qui on changé :

A B C
shf shf
shf shf
hssg AAA AAA
sh hssg
546 sh
21 546
ABC 21
AZE ABCD ABCD
ABD AZED AZED

merci d'avance



2 réponses

Messages postés
2172
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
9 novembre 2020
298
Bonjour
Pour une question de logique, j'ai affecté la colonne A à la colonne 1 et la colonne B à la colonne 2.
Sub Bouton1_Cliquer()
    Dim Colonne1 As Range, Colonne2 As Range, cellule As Range, Trouve As Range
    
    'Compare les colonne A et B de la feuilles 1
    Set Colonne1 = Range(("A2"), Range("A2").End(xlDown))
    Set Colonne2 = Range(("B2"), Range("B2").End(xlDown))
    
    'Efface la plage de réception
    Range("C2:C65536").ClearContents
    
    'Retranscrit les données différente dans la colonne 3
    For Each cellule In Colonne2
        Set Trouve = Colonne1.Find(cellule.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Trouve Is Nothing Then cellule.Offset(0, 1).Value = cellule
    Next
End Sub

Cdlt
Bonjour,

Merci pour cette réponse rapide !!

cdlt