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

Fermé
Grandeguele - 19 avril 2017 à 11:11
 Grandeguele - 20 avril 2017 à 08:32
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

Frenchie83
Messages postés
2235
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
5 mars 2022
332
19 avril 2017 à 18:13
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
0
Bonjour,

Merci pour cette réponse rapide !!

cdlt
0