Comparer 2 colonnes de 2 classeurs diff VBA

Résolu
Bonjour,

voilà je suis débutant en prog VBA et aujourd'hui je souhaite comparer une colonne d'un classeur B à la colonne du classeur A pour indiquer le nombre de références du classeur B qui n'apparaissent pas dans le classeur A dans une cellule du classeur C.
En espérant avoir été clair :)

j'ai déjà essayé beaucoup de choses sans résultats... ce qui complique la tâche est la comparaison sur des feuilles de classeurs différents je pense
si vous avez une idée
Merci!

4 réponses

  1. Modérateur
    Bonjour,

    Timer() : https://support.microsoft.com/fr-fr/office/timer-fonction-46da243c-2570-4950-a818-6d6934bf584a?ocmsassetid=ha001228923&correlationid=ae2d1731-dae3-4c25-aa99-758353463263&ui=fr-fr&rs=fr-fr&ad=fr

    Application.ScreenUpdating = False : empêche le rafraichissement de l'écran

    Set MonDico1 = CreateObject("Scripting.Dictionary") Créé un objet Dictionary : https://support.microsoft.com/fr-fr/help/187234

    SpecialCells(xlCellTypeConstants : Les cellules contenant des constantes.

    If Not MonDico1.Exists(c.Value) Then MonDico1.Add c.Value, c.Address : Lien déjà donné, t'aurais pu lire.....

    Range(MonDico1.Item(e)).Font.Color = IIf(MonDico2.Exists(e), vbBlack, vbRed) Mets en noir (vbBlack) si e exist dans le dictionary (http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm#SupDoubBD) et en rouge (vbRed) dans le cas contraire, ou l'inverse je ne sais plus...
    1. Une âme charitable pourrait elle me commenter rapidement ce que j'ai souligné s'il vous plaît. et je ne comprend pas pourquoi les variables ne sont pas déclarés :o

      Sub ComparaisonColonne()
        t = Timer()
        f = 1 'no feuille
        Application.ScreenUpdating = False
       Set MonDico1 = CreateObject("Scripting.Dictionary")
        Set MonDico2 = CreateObject("Scripting.Dictionary")
        Workbooks("classeur1.xls").Activate
        For Each c In Sheets(f).Range("A:D").SpecialCells(xlCellTypeConstants, 23) If Not MonDico1.Exists(c.Value) Then MonDico1.Add c.Value, c.Address
        Next
        Workbooks("classeur2.xls").Activate
        Sheets(f).Activate
        For Each c In Sheets(f).Range("A:D").SpecialCells(xlCellTypeConstants, 23)
          If Not MonDico2.Exists(c.Value) Then MonDico2.Add c.Value, c.Address
        Next
        Workbooks("classeur1.xls").Activate
        Sheets(f).Activate
        For Each e In MonDico1
           Range(MonDico1.Item(e)).Font.Color = IIf(MonDico2.Exists(e), vbBlack, vbRed)
        Next
        Application.ScreenUpdating = True
        MsgBox Timer() - t
      End Sub