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 :

Consolidation de n feuilles avec "Consolidate Sources:="


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Consolidation de n feuilles avec "Consolidate Sources:="
    Bonjour,

    J'ai plusieurs fichiers qui contiennent chacun entre 50 et 200 feuilles, c'est feuilles ont toutes le même format.

    Je voudrais utiliser "Données/Consolider" pour consolider telle ou telle plage de cellules d'un nombre variable de feuilles successives, mais la tache s’avère pénible quand on doit consolider 200 feuilles.

    J'ai donc chercher sur le net une solution VBA à mon problème et j'ai trouvé ce code;

    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
    Sub Consolidate_Totals()
        Dim ws As Worksheet
        Dim sArray As Variant, i As Integer
        ReDim sArray(1 To 1)
     
        '---Make Array with Named Ranges to be Consolidated
        For Each ws In ActiveWorkbook.Worksheets
            If ws.Visible And ws.Name <> "Total" Then
                i = i + 1
                ReDim Preserve sArray(1 To i)
                sArray(i) = ws.UsedRange.Address(ReferenceStyle:=XlReferenceStyle.xlR1C1, external:=True)
            End If
        Next ws
        If i = 0 Then Exit Sub
     
        '---Consolidate using the Array
        Sheets("Total").Range("j10").Consolidate Sources:=(sArray), _
            Function:=xlSum, TopRow:=True, LeftColumn:=True, CreateLinks:=False
    End Sub

    mais ce code consolide toutes les cellules utilisées des feuilles visibles uniquement.

    Comme je suis nul (mais vraiment nul hein) en VBA est-ce que quelqu'un peut modifier ce code pour consolider une plage de cellules (qui est la même sur toutes les feuilles) de n feuilles que je choisirais ?

    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La réponse est dans ta question. Tu écris toi même que le traitement ne se fait que sur les feuilles visibles.
    Ne vois-tu rien qui te donne une piste en ligne 8 ?
    Sans avoir testé, je supprimerais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ws.Visible And ws.Name <> "Total" Then
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour Philippe

    Merci de ta réponse.

    Oui oui j'avais remarqué la ligne 8. Ce code ne consolide que les feuilles visibles. J'ai eu l'idée de masquer toutes les feuilles sauf celle que je veux consolider.

    Mais ce que je voudrai c'est consolider uniquement une plage de cellules que je choisirai (par exemple M13:V45) et non pas toutes les cellules utilisées ou formatées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sArray(i) = ws.UsedRange.Address(ReferenceStyle:=XlReferenceStyle.xlR1C1, external:=True)

  4. #4
    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
    bonsoir cousin et bienvenue, bonsoir la forum
    donc vous cherchez à consolider les fichiers qui ont la même structure les une après les autres c'est ça ??? veux tu ajouter une colonne pour indiquer la source?? exemple feuil1, ou feuil2 ou feuilx ??
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    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

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Toujours sans avoir testé, remplacer UsedRange.Address par Range("M13:V45").Address
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    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
    re bonsoir cousin
    une piste à adapter
    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
    Sub collecterDonnées()
    Application.ScreenUpdating = False 'juste pour arrêter affichage écran et améliorer le temps d'exécution du macro
    Dim derligne As Long
    Dim j As Long
    Dim K As Long
    j = 2 'Les données seront classées dans la feuille RECAP à partir de a ligne 2
    With Sheets("RECAPITULATIF")
    derligne = .Range("A" & Rows.Count).End(xlUp).Row 'chercher la dernière ligne non vide de la feuille RECAP
    '*********************************************vider les ligne à partir de la ligne 5
    .Range("A2:AA" & derligne).ClearContents
     ' *****************************************Importer les données dans la feuille RECAP
     For i = 1 To Worksheets.Count
     j = .Range("A" & Rows.Count).End(xlUp).Row
            If Worksheets(i).Name <> "RECAPITULATIF" Then
                K = Worksheets(i).Range("A" & Rows.Count).End(xlUp).Row
                Worksheets(i).Range("A2:G" & K).Copy .Range("A" & j)
                K = 0
            End If
            j = j + 1
        Next i
    End With
    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

  7. #7
    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
    voila un exemple à adapter
    je consolide que la colonne A & B
    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

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Désolé pour le retard mais j'étais en déplacement.

    Merci pour vos réponses, je testerai vos propositions dès que je rentre tout à l'heure et je reviens vers vous.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    BENNASR: Merci de ton aide mais ce n'est pas cette consolidation que je voulais faire, mais celle de "Données/Consolider" du menu. Mais je garde quand meme ton fichier au cas ou . Merci encore cousin.

    Philippe:
    Toujours sans avoir testé, remplacer UsedRange.Address par Range("M13:V45").Address
    Merci pour ta réponse car ce remplacement a donné le résultat attendu pour ce qui est de la plage a consolider. Ça fait un point de résolu. Il ne reste plus qu'a indiquer a Excel les N feuilles a consolider parmi celle du classeur (sans passer par cacher les autres feuilles).

    Voici un exemple très réduit de mon fichier.

    Les plages coloriées sont celle que je veux consolider séparément et selon la demande.
    Fichiers attachés Fichiers attachés

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un exemple très réduit de mon fichier
    Désolé mais je n'ouvre pas les fichiers joints.
    Une bonne explication illustrée par une ou plusieurs images est largement suffisante.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,


    Voici a quoi ressemble mes feuilles.
    Nom : DMR.jpg
Affichages : 539
Taille : 162,4 Ko


    Comme je disais ceci est une feuille parmi plusieurs (entre 50 et 200) par classeur.
    Puisque la question de la plage a consolider et resolue, maintenant il ne reste plus qu'a indiquer a Excel les N feuilles concernées par la consolidation.

    Si mon classeur contient les feuilles DMR01, DMR02, DMR03, ... , DMRX comment indiquer a Excel de consolider les plages roses par exemple des feuilles DMR12 a DMR20 en suite consolider les plages oranges par exemple des feuilles DMR59 a DMR66.

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    C'est a ce point que ça coince toujours

    Est-ce que je vais devoir cacher a chaque fois les feuilles que je veux pas consolider ? Ou y a t-il un moyen de demander a Excel de le faire en faisant un choix: Par exemple créer un USERFORM ou l'on peut faire le choix du fichier en introduisant son chemin, et choisir les feuilles et la plage de cellules qui vont être consolider.

    Je sais je demande trop, perfectionniste est mon plus grand défaut

    Merci de votre aide.

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 764
    Points : 28 622
    Points
    28 622
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Bien entendu qu'il est possible de créer une boîte de dialogue pour choisir une ou plusieurs feuilles, ou pour choisir un classeur, un dossier, etc. mais pour ces derniers, il existe des boîtes de dialogues dédiées (Propriété FileDialog de l'objet Application)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    Décembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur en Génie-Civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2018
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    OK, je vais faire des recherches et des tests et si j'aboutis a quelque chose je reviens vers vous.

    Merci de votre aide.

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