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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    décembre 2018
    Messages
    3
    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 : 3
    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

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    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 : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    décembre 2018
    Messages
    3
    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 : 3
    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
    Membre expérimenté Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    décembre 2013
    Messages
    1 061
    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 : 1 061
    Points : 1 628
    Points
    1 628

    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 ??
    La Fraternité consiste à trouver du plaisir au bonheur de tout ce qui a vécu, vit ou vivra. Un altruisme universel qui s'adresse à l'autre et à tous les autres

  5. #5
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    8 156
    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 : 8 156
    Points : 19 258
    Points
    19 258
    Billets dans le blog
    8

    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  6. #6
    Membre expérimenté Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    décembre 2013
    Messages
    1 061
    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 : 1 061
    Points : 1 628
    Points
    1 628

    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
    La Fraternité consiste à trouver du plaisir au bonheur de tout ce qui a vécu, vit ou vivra. Un altruisme universel qui s'adresse à l'autre et à tous les autres

  7. #7
    Membre expérimenté Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    décembre 2013
    Messages
    1 061
    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 : 1 061
    Points : 1 628
    Points
    1 628

    Par défaut

    voila un exemple à adapter
    je consolide que la colonne A & B
    Fichiers attachés Fichiers attachés
    La Fraternité consiste à trouver du plaisir au bonheur de tout ce qui a vécu, vit ou vivra. Un altruisme universel qui s'adresse à l'autre et à tous les autres

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur en Génie-Civil
    Inscrit en
    décembre 2018
    Messages
    3
    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 : 3
    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.

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