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 :

Tableau de comparaison de plusieurs feuilles [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyst Pricing
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 5
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyst Pricing
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Tableau de comparaison de plusieurs feuilles
    Bonjour à tous,

    J'ai un problème avec un fichier excel-2016, et étant néophyte en VBA je n'arrive pas à trouver une solution. Ne trouvant pas de réponses sur les forums, je me permet de vous le soumettre.

    Plusieurs éditeurs vont m'envoyer des classeurs Excels types :
    Colonne A : Article
    Colonne B : Prix
    Il y aura d'autres colonnes avec d'autres infos

    Après avoir réuni toutes les feuilles dans un classeur, j'aimerais programmer une macro qui compile toutes les colonnes A (donc les articles) dans une feuille récapitulative : certains articles seront dans plusieurs feuilles et donc il faut supprimer les doublons.

    Ensuite, dans cette feuille récapitulative, j'aimerais créer une colonne par feuille de donnée que j'ai, et qui indique le prix de l'article si elle le vend.

    J'arrive a peu près a réunir les articles et supprimer les doublons, mais programmer une macro qui compte les feuilles de sources, qui créer une colonne pour chaque feuille et qui me fait une rechercheV, c'est galère...

    J'espère avoir été assez clair, je peux vous fournir un fichier d'exemple !

    PS : Connaissant un peu PowerPivot, je me dis que cela pourrait être plus adapté, des avis ?

    Merci d'avance

    Jean-Philip

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    A mon modeste avis tu peux procéder différemment en important tous les article en colonne A et En colonne B les prix et en Colonne C la source qui correspond au nom de la feuille et puis tu peux à l'aide d'un tableau croisé dynamique (en ligne les article / en colonne la source / et en valeur les prix )
    si ça t'arrange voila une piste à adapter...si non on va voir ce qu'on peux faire ... BONNE CONTINUATION
    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
    Sub collecterDonnées()
    Application.ScreenUpdating = False 'juste pour arrêter affichage écran et améliorer le temps d'exécution du macro
    Dim derligneS As Long
    Dim derligneR As Long
    Dim j As Long
    Dim K As Long
    j = 2
    With Sheets("RECAPITULATIF")
    derligneR = .Range("A" & Rows.Count).End(xlUp).Row
    '*********************************************vider les ligne à partir de la ligne 5
    .Range("A2:B" & derligneR).ClearContents
     ' *****************************************Importer les données dans la feuille RECAP
     .Cells(1, 1).Resize(1, 3) = Array("Article", "Prix", "Source")
     
     For i = 1 To Worksheets.Count
     j = .Range("A" & Rows.Count).End(xlUp).Row + 1
            If Worksheets(i).Name <> "RECAPITULATIF" Then
                derligneS = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
                For K = 2 To derligneS
                .Range("A" & j) = Worksheets(i).Range("A" & K)
                .Range("B" & j) = Worksheets(i).Range("B" & K)
                .Range("C" & j) = Worksheets(i).Name
                j = j + 1
                Next K
                K = 0
            End If
        Next i
    End With
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Pour regrouper sans doublons vous pouvez faire avec un dictionnaire
    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
    37
    38
    39
    40
    Sub collecterDonnées()
    Application.ScreenUpdating = False 'juste pour arrêter affichage écran et améliorer le temps d'exécution du macro
     
    '************************************************************************************************************************
     Dim Plage As Range
        Dim Cel As Range
        Dim Dico As Object
        Dim Cle As Variant
        Dim L
        Dim I As Integer
        Dim j As Integer
     
    With Sheets("RECAPITULATIF")
    derligneR = .Range("A" & Rows.Count).End(xlUp).Row
    '*********************************************vider les ligne à partir de la ligne 5
    .Range("A2:B" & derligneR).ClearContents
     .Cells(1, 1).Resize(1, 3) = Array("Article", "Prix", "Source")
     ' *****************************************Importer les données dans la feuille RECAP
     End With
     Set Dico = CreateObject("Scripting.Dictionary")
     For j = 1 To Worksheets.Count
            If Worksheets(j).Name <> "RECAPITULATIF" Then
            Set Plage = Worksheets(j).Range(Worksheets(j).Cells(2, 1), Worksheets(j).Cells(Worksheets(j).Rows.Count, 1).End(xlUp))
            For Each Cel In Plage: Dico(Cel.Value) = Dico(Cel.Value) & Cel.Offset(, 1).Value & ";" & Worksheets(j).Name & ";": Next Cel
            End If
      Next j
             Cle = Dico.Keys
     
        With Sheets("RECAPITULATIF")
          For I = 0 To Dico.Count - 1
            L = Split(Dico(Cle(I)), ";")
            .Cells(I + 2, 1).Value = Cle(I)
            .Cells(I + 2, 2).Value = L(0)
            .Cells(I + 2, 3).Value = L(1)
        Next
     
    End With
    MsgBox ("Regroupement effectué avec succès .... ")
    Application.ScreenUpdating = True
    End Sub
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  4. #4
    Candidat au Club
    Homme Profil pro
    Analyst Pricing
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 5
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyst Pricing
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci infiniment pour votre temps BENNASR, j'aime beaucoup cette méthode et ça marche impeccable ! Je vais approfondir cette idée du dictionnaire mais avec cette méthode je ne devrais pas en avoir besoin.

    Bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] tableau croisé dynamique sur plusieurs feuilles
    Par yann7630 dans le forum Excel
    Réponses: 2
    Dernier message: 01/07/2015, 19h34
  2. [XL-2007] Tableau et mise à jour plusieurs feuilles
    Par rainette dans le forum Excel
    Réponses: 0
    Dernier message: 26/09/2014, 15h26
  3. [XL-2010] [Tableau Croisé Dynamique avec plusieurs feuilles]
    Par nikko49 dans le forum Conception
    Réponses: 1
    Dernier message: 01/03/2013, 11h17
  4. tableau de synthèse de plusieurs feuilles
    Par ALTINEA dans le forum Excel
    Réponses: 7
    Dernier message: 01/10/2009, 18h31
  5. remplir un tableau avec des références à plusieurs feuilles
    Par Amiral19 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 22/07/2007, 22h26

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