Comparer 2 colonnes de 2 classeurs diff VBA

Résolu/Fermé
laurent - 23 févr. 2012 à 09:42
 laurent - 23 févr. 2012 à 11:42
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!

A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 févr. 2012 à 09:45
Bonjour,

Tu peux t'inspirer de ce code de Boisgontier : http://boisgontierjacques.free.fr/pages_site/Dictionnaire.htm#ComparaisonC
0
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
23 févr. 2012 à 11:28
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
merci à toi!
0