Macro compilation/sommes de fichiers

Bonjour à toutes et à tous,

Je suis en train de construire une macro et malgré mes recherches je suis dans l'impasse. Je vous explique :

Je dois compiler les fichiers de différentes agences dans un seul fichier global. La structure du fichier agence comme celui du global est exactement la même.

L'intérêt est d'avoir dans le fichier global, la somme des données qui sont dans les fichiers agences. J'ai une vingtaine de fichiers agences, à gérer tous les mois d'où l'intérêt d'automatiser.

Il n'y a qu'une seule feuille, et sur cette feuille différents tableaux à remplir.

Je vous joins le fichier. J'ai une macro mais celle ci n'a aucun sens malheureusement. Il y a du bon et du moins bon que j'ai pu trouver.

Sub Test()

    Dim Cls As Workbook
    Dim Fe As Worksheet
    Dim Tbl() As String
    Dim TblTotal() As Double
    Dim Plage As Range
    Dim Retour As Integer
    Dim I As Integer
    Dim J As Long
    Dim K As Long

    'affiche la boite de dialogue
    With Application.FileDialog(msoFileDialogFilePicker)

        'au moins un classeur doit être sélectionné sinon, fin...
        Retour = .Show
        If Retour = 0 Then Exit Sub

        'stocke les chemins et nom de fichier dans un tableau pour le bouclage
        For I = 1 To .SelectedItems.Count

            ReDim Preserve Tbl(1 To I)
            Tbl(I) = .SelectedItems(I)

        Next I

    End With

    'initialise le tableau par rapport à la plus grande plage (feuille "GLOBAL")
    ReDim TblTotal(1 To 13, 1 To 4)

    'boucle sur les classeurs
    For I = 1 To UBound(Tbl)

        Set Cls = Workbooks.Open(Tbl(I))

        'boucle sur les feuilles définies du classeurs en cours
        For Each Fe In Cls.Worksheets(Array("GLOBAL"))

            Select Case Fe.Name

                'défini la plage sur la zone voulue pour chaque feuille concernée
                Case "GLOBAL"
                    Set Plage = Fe.Range("B34:D49")

            End Select

            'boucle sur les lignes
            For J = 1 To Plage.Rows.Count

                'boucle sur les colonnes
                For K = 1 To Plage.Columns.Count

                    'gère l'erreur d'un valeur non numérique ou autre (plus simple pour le test...)
                    On Error Resume Next

                        'totalise les cellules dans le tableau
                        TblTotal(J, K) = TblTotal(J, K) + Plage(J, K)

                Next K

            Next J

        Next Fe

        'ferme le classeur en cours
        Cls.Close False

    Next I

    'affiche les résultat dans la feuille active de A1 à Xx...
    With ActiveSheet

        .Range(("B34:D49"), .Cells(UBound(TblTotal, 1), UBound(TblTotal, 2))) = TblTotal

    End With

End Sub

Un grand merci à vous !!!

9exemple-test.xlsm (23.98 Ko)

Bonjour,

Merci pour votre conseil je vais essayer, mais au vu des formats des tableaux que vous m'avez envoyé, j'ai des doutes car cela ne correspond pas à la trame de mon fichier.Avez vous vu mon fichier ?

En tout cas j'espère que ça va marcher.

Bonjour,

Je viens d'essayer et cela ne correspond pas à mon besoin malheureusement (même si ça a l'air vraiment bien à l'avenir).

Ce qu'il me faut c'est que grâce à la macro ou autre, je sélectionne tous les fichiers secondaires, que toutes les cellules C14 s'additionne entre elles, et que dans la cellules C14 du fichier global ce soit le résultat de la somme des fichiers secondaires. Et ce dans toutes les cellules qui m'intéressent.

Tout en gardant la même disposition , le même affichage, la même trame, etc..

Mettre en automatique et en boucle. La macro que j'avais trouvé semblait prometteuse, mais galère à comprendre...

re

est-il possible dans chacun de tes fichiers de créer un onglet placé en tête, contetnant [u]les données nécessaires [/u]?

(il suffit de mettre des = vers les valeurs de ton onglet actuel)

donne un nom à tes onglet n° 1, toujours le même, par exemple "PourPQ"

alors Power Query va lire les onglets 1 de chaque fichier, et les concaténer, et charger la longue table résultante dans ton Excel

essaye

J'ai la même demande que Flynt77, mais j'ai essayé avec PowerQuerty en vain.

Tous mes documents sont nommés sous formes jj.mm.aaaa.

Ils ont la même structures.

Est-il possible de récupérer toute les données et de les additionner suivant 2 conditions. Le nom de la personne et l'intitulé du cours.

Les sommes seraient répercuté dans un doc excel à part avec chaque feuille ayant pour nom le thème de cours.

y'aurait-il pas dans un code VBA l'apparition d'un .intersec ?? Ou suis-je sur la mauvaise piste.

Je sais que jmb avait bosser dessus...

609-07-2019.xlsx (15.84 Ko)
710-07-2019.xlsx (15.82 Ko)
9bilan-2019.zip (87.59 Ko)

re

quand tu as essayé avec PQuery, quel problème est apparu, à quelle ligne du script ?

quelles étapes as-tu suivies ?

amitiés

re jmb

Je ne sais pas comment faire pour combiner et ajouter et que les lignes se dispatche dans les feuilles du BILAN.

J'ai bien peur que cela sorte des mes compétences.

Il y a trop de variable.

Dans les 365 fichiers genérés. Il faudrait chercher:

La ligne, la spécialité qui donnerait la feuille dans le BILAN.

Le theme qui donnerait le theme dans le BILAN.

Et les colonnes pour ajouter les personnels a chaque fois.

Je ne sais meme pas si cela est réalisable.

A moins de modifier la mise en page de mon bilan... mais j'aurais voulu garder ce format la.

re

c'est faisable avec Power Query (ou avec VBA)

mais dans les 2 cas il y a du job

pour un utilisateur de bon niveau, je pense qu'il faut 2 heures sur place avec le demandeur (pour régler les petits détails au fur et à mesure), il y en a pour 2 heures avec PQuery

on récupère tous les fichiers en un seul (et pas que l'année, TOUTES les années )

on n'a pas peur de milliers de fichiers

restera à faire des TCD pour visualiser par sujet

as-tu un bon excellien à dispo ?

négatif Jmb,

Je m'alimente de tuto, de lecture sur le forum mais je t'avoue ramer un peu... c'est le but.

Depuis je pense avoir appris pas mal de chose par ce que c'est en pratiquant en essayant que je remarque des instructions fausses.

Tu serais partant pour m'aider ? en fonction de nos disponibilités ?

J'aimerais tellement aboutir a un document xlsM hahahaha

re

en VBA, je ne sais pas faire

avec PQuery, j'ai déjà eu ce genre de récupération de données issues de fichiers biscornus

mais le temps manque pour refaire un truc similaire

surtout en tapant les explications

il faut être sur place

je ne parle que de moi et de ce que je sais faire

sur ce forum, il y a d'autres personnes très fortes en PQuery et/ou en VBA

amitiés

ok mais sinon tu penses que c'est réalisable ? et pas trop lourd ? 365fichiers même si il y a 4 lignes maximum a récupérer.

Je viens de penser :

- Je fais un fichier BILAN unique.

Nom sur une ligne en haut.

Tout les thèmes les uns après les autres.

Et après je rajoute un copier-coller qui vient a la suite a chaque fois, des lors que j'enregistre mon bulletin journalier(je rallonge ma macro enregistrer). Car je suis obligé de garder une trace journalière.

Et ensuite de la je peux faire peux être quelques choses ?? non ??

re

pour te faire la main, fais un test : crée 3 fichiers (du 01 au 03 janvier 2019) tous avec simplement 2 colonnes et 3 lignes saisies

ouvre un autre Excel, et lance Power Query, récupérer de répertoire (ou de classeur)

amitiés

Re

Oui je vais essayer de me faire la main comme ça. Je reviendrais vers le forum pour donner des News.m sur ce sujet.

@+

Rechercher des sujets similaires à "macro compilation sommes fichiers"