Comparer 2 colonnes et donner les valeurs en plus

Bonjour,

Alors j'ai une petite demande a vous faire :

Je voudrais comparer plusieurs colonnes l'une avec l'autre

et savoir les valeurs qu'il y a en plus ou en moins dans la 2é.

voir fichier joint.

Merci de votre aide

39liste-annee.xlsx (14.80 Ko)

Bonjour,

Tes explications ne sont pas très claires,

ce serait bien de mettre manuellement les résultats à obtenir

à te relire

Claude

J'ai refait le fichier avec un exemple de ce que je souhaiterais.

en gros je veux savoir qu'est ce qu'il y en plus et en moins entre une colonne x1 et une colonne x2

53liste-annee.xlsx (14.31 Ko)

re,

Je regarde ce qu'on peut faire,

tu aurais pu compléter entièrement le tableau exemple (résultats),

les libellés de tes encadrés prêtent à confusion !

Claude

bonjour; bonjour Dubois

voila un sujet pas banal et pourtant d'apparence simple .........

je me suis livré en feuille 2 a une etude de principe pour faire avancer le shmilblik ;il yaura bien un crack pour ameliorer et transposer sur la feuille 1

38jeremy25.zip (12.31 Ko)

dolipranne

cordialement

Bonsoir à tous,

en attendant, voilà ce que j'ai compris !

Sub Compare() 'de Claude Dubois pour jeremy23 le 16/09/2011
Dim DLg&, Lg&, cL%, cL2%, i%
    Application.ScreenUpdating = False
    DLg = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Range("q3:z" & DLg).ClearContents

        cL2 = 17 '1er résultat en colonne 17 ("Q")
    For cL = 10 To 13
        Lg = Columns(cL).Resize(, 2).Find("*", , , , xlByRows, xlPrevious).Row
        For i = 3 To Lg
            '--- ajoutés ---
            If Application.CountIf(Columns(cL), Cells(i, cL + 1)) = 0 Then
                Cells(65000, cL2).End(xlUp)(2) = Cells(i, cL + 1)
            End If
            '--- supprimés ---
            If Application.CountIf(Columns(cL + 1), Cells(i, cL)) = 0 Then
                Cells(65000, cL2 + 1).End(xlUp)(2) = Cells(i, cL)
            End If
        Next i
        cL2 = cL2 + 2
    Next cL
End Sub

Claude

Bonjour,

Voir PJ

Sub essai()
  Call compareChamp(Range("j3:j" & [j65000].End(xlUp).Row), Range("k3:k" & [K65000].End(xlUp).Row), Range("Q11"))
  Call compareChamp(Range("k3:k" & [K65000].End(xlUp).Row), Range("j3:j" & [j65000].End(xlUp).Row), Range("R11"))
  Call compareChamp(Range("k3:k" & [K65000].End(xlUp).Row), Range("L3:L" & [L65000].End(xlUp).Row), Range("S11"))
  Call compareChamp(Range("L3:L" & [L65000].End(xlUp).Row), Range("K3:K" & [K65000].End(xlUp).Row), Range("T11"))
End Sub

Sub compareChamp(champ1 As Range, champ2 As Range, cel3 As Range)
  Set MonDico1 = CreateObject("Scripting.Dictionary")
  For Each c In champ1: MonDico1(c.Value) = 1: Next c
  Set mondico2 = CreateObject("Scripting.Dictionary")
  For Each c In champ2
    If Not MonDico1.exists(c.Value) Then If Not mondico2.exists(c.Value) Then mondico2(c.Value) = 1
  Next c
  If mondico2.Count > 0 Then cel3.Resize(mondico2.Count, 1) = Application.Transpose(mondico2.keys)
End Sub

Truffault

88comparechamps.zip (18.75 Ko)

Merci a vous 2 deux, les 2 méthodes fonctionnent bien.

Rechercher des sujets similaires à "comparer colonnes donner valeurs"