IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro pour comparer des prix sur plusieur onglets


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Par défaut Macro pour comparer des prix sur plusieur onglets
    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

    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.

    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


    tableau AO.xlsx

  2. #2
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Par défaut
    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.
    le but de cette macro étant de me signaler le meilleur tarif ALL IN PRICE par ligne par rapport à tous les onglets.
    de plus souhaitant définir un 1er - 2eme et 3eme la je sèche complétement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     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

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour
    il faudrait deja voir a ne pas utiliser une variable range comme une seule cells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    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 n 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
    si tu comprends un minimum ce que tu a ecrit tu te rendra compte de ton erreur
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Par défaut
    bonsoir

    Ne maîtrisant pas les macro j ai utilisé ce code qui était destiné à comparer uniquement des prix dans deux colonnes dans deux onglets d'un même fichier.
    J ai essayé de le transposé en ajoutant les ligne pour mes autres onglet mais forcé de constater que j ai loupé quelque chose ;(

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/12/2012, 21h04
  2. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 13h04
  3. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 09h43
  4. [XL-2003] MAcro pour calcul automatique uniquement sur l'onglet actif
    Par Arndt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2010, 15h12
  5. Créer une macro pour vérifier des prix
    Par lolonico dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/04/2009, 10h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo