Comparer deux tableau sur une même feuille

laurent950

XLDnaute Accro
Bonsoir,

Je cherche a comparer deux tableau sur une même feuille, soit dans le Tableau A des choses qu'il manque dans le Tableau B (Je voudrais un Faux en face des données manquantes)

J'ai fait une boucle (et la boucle tourne en boucle, elle remplie tous par faux)
j'ai joint un exemple (sur fichier excel)

Ps : j'ai les deux version 2003 ou 2007

si quelqu'un a la solution je vous remerci

laurent
 

Pièces jointes

  • Compare deux tableaux.xls
    30 KB · Affichages: 68
  • Compare deux tableaux.xls
    30 KB · Affichages: 76
  • Compare deux tableaux.xls
    30 KB · Affichages: 77

unrender

XLDnaute Junior
Re : Comparer deux tableau sur une même feuille

Voilou :) (avec remplissage auto. de la partie jaune)

Code:
Sub test()
Z = 6
' c = Tableau B
For Each c In Range(Cells(5, 6), Cells(65536, 6).End(xlUp))
' k = Tableau A
    For Each k In Range(Cells(5, 1), Cells(65536, 1).End(xlUp))
        trouv = 0
        If k = c Then
            trouv = 1
            Exit For
        End If

    Next k
    If trouv = 0 Then
        Range(c.Address).Offset(, 3) = "FAUX"
        ' remplissage automatique de la partie jaune
        Cells(Z, 12) = Range(c.Address)
        Cells(Z, 13) = Range(c.Address).Offset(, 1)
        Cells(Z, 14) = Range(c.Address).Offset(, 2)
        Z = Z + 1
    End If
Next c
End Sub
 
Dernière édition:

laurent950

XLDnaute Accro
Re : Comparer deux tableau sur une même feuille

J'ai travailler et j'ai trouver cette solution :

Sub ColorieCommunsOK()

' Tableau B = TabB (Le tableau le plus complet = toutes les valeurs)
Set TabB = Range(Cells(5, 6), Cells(65536, 6).End(xlUp))
Set MonDico1 = CreateObject("Scripting.Dictionary")

' Tableau A = TabA (Celuis avec les valeurs manquantes)
Set TabA = Range(Cells(5, 1), Cells(65536, 1).End(xlUp))
Set MonDico2 = CreateObject("Scripting.Dictionary")

' Remplissage Valeur du tableau A mise en mémoire
For Each c In TabA
MonDico2(c.Value) = c.Value
Next c

' Remplissage Valeur du tableau B (celuis avec toutes les valeurs)
For Each c In TabB
MonDico1(c.Value) = c.Value

' Condition suite au remplissage (si dans MonDico2 la valeur existe = Faux)
If MonDico2.exists(c.Value) Then
Range(c.Address).Offset(, 3) = "FAUX"
Else
End If
Next c
End Sub


PS : comment inverser cette macro si FAUX = la case est Vide et si la case est Vide mettre FAUX

Une personne a une idées s'il vous plais ?

Laurent
 

laurent950

XLDnaute Accro
[Resolu] Comparer deux tableau sur une même feuille

Merci à toi unrender,

je vais tester votre macro j'ai finis la mienne c'était pas trés simple.

Sub ColorieCommunsinverse()

' Tableau B = TabB (Le tableau le plus complet = toutes les valeurs)
Set TabB = Range(Cells(5, 6), Cells(65536, 6).End(xlUp))
Set MonDico1 = CreateObject("Scripting.Dictionary")

' Tableau A = TabA (Celuis avec les valeurs manquantes)
Set TabA = Range(Cells(5, 1), Cells(65536, 1).End(xlUp))
Set MonDico2 = CreateObject("Scripting.Dictionary")

' Nettoyage
TabB.Offset(, 3).Clear

' Remplissage Valeur du tableau A mise en mémoire
For Each c In TabA
MonDico2(c.Value) = c.Value
Next c

' Remplissage Valeur du tableau B (celuis avec toutes les valeurs)
For Each c In TabB
MonDico1(c.Value) = c.Value

' Condition suite au remplissage (si dans MonDico2 la valeur existe = Faux)
If Not MonDico2.Exists(c.Value) Then
Range(c.Address).Offset(, 3) = "FAUX"
Else
End If
Next c
End Sub

je joint le fichier

laurent
 

Pièces jointes

  • Compare deux tableaux.xls
    45.5 KB · Affichages: 80
  • Compare deux tableaux.xls
    45.5 KB · Affichages: 79
  • Compare deux tableaux.xls
    45.5 KB · Affichages: 89

Fo_rum

XLDnaute Accro
Re : Comparer deux tableau sur une même feuille

Bonsoir,

moins sophistiqué et avec de la couleur :
Code:
Sub test()
    Dim C As Range, Est As Range
    For Each C In Range(Cells(5, 6), Cells(65536, 6).End(xlUp))
        Set Est = Range(Cells(5, 1), Cells(65536, 1).End(xlUp)).Find(C, LookIn:=xlValues)
        If Est Is Nothing Then
            C.Offset(, 3) = "FAUX"
        Else
            C.Interior.ColorIndex = 4
        End If
    Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 392
Messages
2 087 991
Membres
103 691
dernier inscrit
christophe89