Comparer 2 colonnes de 2 classeurs diff VBA

Résolu
laurent -  
 laurent -
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. laurent
     
    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
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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...
    0