Macro pour comparer plusieurs données dans plusieur feuilles

cecev76

XLDnaute Nouveau
Bonjour à vous

Autant faire des tableaux farfelue et des formules autant les macros c'est pas mon fort, donc je me permet de venir vers vous pour m'aider à cela :confused:

Je souhaiterais une macro pouvant comparer dans un fichier EXCEL plusieurs feuilles et me déverser le résultat sur une nouvelle feuille (nommé RESULTAT) . Cette macro doit pouvoir être flexible et transposable à d'autre appel d'offre.


Les feuilles dans le fichier « comparateur » seront toutes identiques mais les données différente.

Les données à comparer sont le résultat dans la colonne ALL IN PRICE ( colonne variable elle peut être en W comme en U) de chaque liaison (colonne A).

Il peut y avoir plusieurs colonnes ALL IN PRICE si plusieurs équipements demandés, donc pouvoir rajouter leur prise en compte dans la macro.

La colonne reprenant les liaisons peut être variable d’une demande à l’autre ont peut avoir 100 lignes comme 500 donc je doit pouvoir modifier la tranche prise en compte.

La CELLULE A1 signale le nom de l’entreprise.

La feuille RESULTAT reprend exactement le même tableau avec en plus 3 colonnes COMPAGNIE qui correspond à la cellule A1 des différentes feuilles du fichier. Ceci afin de me signaler qu’elles sont les 3 meilleurs compagnies sur une liaison. La macro doit pouvoir déverser également dans cette feuille toute les informations de la meilleur offres.

le fichier joint comporte 7 feuilles à comparer mais ceci est pour l'exemple car cela peut varier de 2 feuilles à 30.

Enfin si le lancement de la comparaison pouvait être matérialisé par un bouton : GO, se serait parfait ;)


Tout cela afin d'éviter les doubles saisie et gagner du temps dans le traitement de l'information.

merci d'avance pour vos conseils et aides
 

Pièces jointes

  • exemple AO - SANS MACRO - Copie.xlsx
    72.3 KB · Affichages: 42
Dernière modification par un modérateur:

cecev76

XLDnaute Nouveau
Re : Macro pour comparer plusieurs données dans plusieur feuilles

j'avance sur le code mais celui ci est quelque peu bancal car il ne me compare rien dans certaine feuilles et les résultats sont erronée. :confused:


Sub CompareMontant()
Set f1 = Sheets("Feuil1")
Set f2 = Sheets("Feuil2")
Set f3 = Sheets("Feuil3")
Set f4 = Sheets("Feuil4")
Set f5 = Sheets("Feuil5")
Set f6 = Sheets("Feuil6")
Set f7 = Sheets("Feuil7")
f1.Range("W5:x10000").Sort Key1:=f1.[W5], Order1:=xlAscending, Header:=xlYes
f2.Range("W5:x10000").Sort Key1:=f2.[W5], Order1:=xlAscending, Header:=xlYes
f3.Range("W5:x10000").Sort Key1:=f3.[W5], Order1:=xlAscending, Header:=xlYes
f4.Range("W5:x10000").Sort Key1:=f4.[W5], Order1:=xlAscending, Header:=xlYes
f5.Range("W5:x10000").Sort Key1:=f5.[W5], Order1:=xlAscending, Header:=xlYes
f6.Range("W5:x10000").Sort Key1:=f6.[W5], Order1:=xlAscending, Header:=xlYes
f7.Range("W5:x10000").Sort Key1:=f7.[W5], Order1:=xlAscending, Header:=xlYes
Set a = f1.Range("W6:W" & f1.[W65000].End(xlUp).Row)
Set b = f2.Range("W6:W" & f2.[W65000].End(xlUp).Row)
Set c = f3.Range("W6:W" & f3.[W65000].End(xlUp).Row)
Set d = f4.Range("W6:W" & f4.[W65000].End(xlUp).Row)
Set e = f5.Range("W6:W" & f5.[W65000].End(xlUp).Row)
Set f = f6.Range("W6:W" & f6.[W65000].End(xlUp).Row)
Set g = f7.Range("W6:W" & f7.[W65000].End(xlUp).Row)
b.Resize(, 2).Interior.ColorIndex = xlNone
a.Resize(, 2).Interior.ColorIndex = xlNone
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
For Each c In a
d1(c.Value) = c.Offset(, 1).Value
Next c
For Each c In b
d2(c.Value) = c.Offset(, 1).Value
If d1.exists(c.Value) Then
If d1.Item(c.Value) <> d2.Item(c.Value) Then c.Resize(, 2).Interior.ColorIndex = 4
Else
c.Resize(, 2).Interior.ColorIndex = 3
End If
 

Discussions similaires