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 calcul somme de la même cellule pour plusieurs fichiers excel [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 5
    Par défaut Macro calcul somme de la même cellule pour plusieurs fichiers excel
    Bonjour à tous,

    Je suis à la recherche d'une macro qui calculerai la somme d'une même cellule présente dans plusieurs fichiers Excel.

    En gros, dans la cellule A1 d'un fichier appelé Total, je voudrais obtenir la somme de toutes les cellules B1 de tous les fichiers ABCD*.xlsm présents dans le dossier D:\test.

    Si qqs courageux sont motivés, cela m'aiderait bcp.

    Merci d'avance,

  2. #2
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Si qqs courageux sont motivés, cela m'aiderait bcp.
    Courageux oui, mais pas motivé pour faire le travail à ta place, de plus tu ne présentes aucun code que tu aurais entrepris …

    Par contre tu peux voir du coté des boucles, pour pointer sur la cellule B1 de chaque fichier en utilisant ExecuteExcel4Macro (à faire correspondre à une variable, on trouve plein d'exemples avec une recherche).
    Tu pourras alors additionner au fur et à mesure la cellule B1 de chaque fichiers dans ta boucle … pour donner le résultat final en A1

    Voilà, je t'ai donné une direction afin que tu puisses commencer un code

    Edit : ne connaissant pas le nom de tes fichiers l'utilisation de Dir serait approprié pour récupérer les noms de chaque fichiers
    Bien sur on peut touver tous ces codes dans la faq ce qui mâche une partie du travail

    Je repasserai qd tu auras présenté un code et expliqué la difficulté rencontrée si il y en a une
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Cousinhub44 Voir le message
    Je suis à la recherche d'une macro qui calculerai la somme d'une même cellule présente dans plusieurs fichiers Excel.
    En gros, dans la cellule A1 d'un fichier appelé Total, je voudrais obtenir la somme de toutes les cellules B1 de tous les fichiers ABCD*.xlsm présents dans le dossier D:\test.
    Tu utilises une boucle While pour scruter tous les fichiers d'un répertoire.
    https://msdn.microsoft.com/fr-fr/VBA...wend-statement
    Pour avoir les noms de fichiers, utilise la fonction Dir.
    https://msdn.microsoft.com/fr-fr/VBA...s/dir-function
    Pour chaque fichier, tu ouvres le fichier avec Workbooks.Open.
    https://msdn.microsoft.com/fr-fr/vba...n-method-excel
    Tu additionnes la valeur de la cellule cible à celle se trouvant déjà dans la cellule total.
    Tu fermes le fichier avec un Close.
    https://msdn.microsoft.com/fr-fr/vba...e-method-excel

    Si qqs courageux sont motivés, cela m'aiderait bcp.
    Il est étrange de constater que tous ceux qui écrive de telles formules dans leur message, ne semblent ni courageux, ni motivés...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 5
    Par défaut
    Voici ce que j'ai à ma disposition :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Option Explicit
    Sub Creer_extract()
        Dim wbRecap As Workbook         'fichier recap
        Dim Etatcomptable As Worksheet        'feuille où on écrit les données
        Dim wbSource As Workbook        'fichier à ouvrir
        Dim wsSource As Worksheet       'feuille où on cherche les données
        Dim DernLign As Integer         'ligne où on écrit les données
        Dim vFichiers As Variant        'noms des fichiers
        Dim i As Integer, k As Integer
        Dim rgRecap As Range            'plage où on copie les données
    Set wbRecap = ThisWorkbook("essai")       'Fichier récapitulatif
           Set wsRecap = wbRecap.Sheets("Feuil1")  'on écrit dans la feuille 1 du fichier récapitulatif
    ' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
        On Error Resume Next
    Set vFichiers = Application.FileSearch
       With vFichiers
        .LookIn = "D:\Reporting" 'Dossier dans lequel chercher les fichiers
        .Filename = "*.xlsm" 'Extension des fichiers a trouver
    End With
    ' --- Vérifier qu'au moins un fichier à été sélectionné
    If Not IsArray(vFichiers) Then
            Debug.Print "Aucun fichier sélectionné."
            MsgBox "Erreur! Aucun fichier sélectionné."
            Exit Sub
    End If
    On Error Resume Next
    Application.ScreenUpdating = False
    ' --- Boucle à travers les fichiers
    For k = 1 To UBound(vFichiers)
        Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
    ' C'est ici qu'on écrit les instructions
    Set wbSource = Workbooks.Open(vFichiers(k))                        'on ouvre le fichier
    Set wsSource = wbSource.Sheets("Rapport")                                  'on copie les données de la feuille 1 des fichiers présent dans le dossier
    DernLign = wbRecap.Sheets("Feuil1").Range("A1000").End(xlUp).Row + 1     'ligne pour écrire le log des fichiers compilés
    ' - On copie les données vers le fichier Recapitulatif
    Set rgRecap = wsRecap.Range("A1000").End(xlUp).Offset(1, 0)
        rgRecap = Time
    With wsSource
        .Cells(NumeroLigne, 1) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H7")
        .Cells(NumeroLigne, 2) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H8")
        .Cells(NumeroLigne, 3) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H9")
        .Cells(NumeroLigne, 4) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H10")
        .Cells(NumeroLigne, 5) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H11")
        .Cells(NumeroLigne, 6) = ExtraireValeur(DossierOk, NomFichier, NomFeuille, "H12")
    End With
    wbSource.Close              'fermer fichier
    Set wbSource = Nothing
    Next k
    Application.ScreenUpdating = True
    Application.StatusBar = False
    End Sub
    Function Selectionner_Fichiers(sTitre As String) As Variant
    Dim sFiltre As String, bMultiSelect As Boolean
    sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
    bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
    Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
    End Function
     
     
    Private Sub CommandButton1_Click()
        Creer_extract
    End Sub

    J'ai une erreur à la ligne Set wbRecap (Erreur de compilation, variable non définie)

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Cousinhub44 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbRecap = ThisWorkbook("essai")       'Fichier récapitulatif
    J'ai une erreur à la ligne Set wbRecap (Erreur de compilation, variable non définie)
    C'est normal : ThisWorkbook désigne le fichier dans lequel se trouve la macro. Il n'a pas besoin de nom.
    https://msdn.microsoft.com/library/0...ice.15%29.aspx

    Je ne sais pas pourquoi mais j'ai la désagréable impression que tu as récupéré un code sur un site quelconque sans trop savoir ce qu'il fait (et sans avoir cherché à l'étudier) et que tu l'as balancé tel quel ici, en te disant que tu allais trouvé des personnes pour le transformer en quelque chose qui réalise ton besoin, mais sans vraiment participer toi-même à ce travail...
    J'espère que je me trompe, sinon, ça ne va pas aller bien loin.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 5
    Par défaut
    Oui, j'ai évidement récupéré des infos à droite et à gauche. Quand on cherche, on va voir plein de trucs existants, on bidouille et j'essaie vraiment de comprendre mais je ne suis pas un expert vba. Je fais ce que je peux.

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Cousinhub44

    Quand on cherche, on va voir plein de trucs existants, on bidouille
    Juste une question (je suis très curieux)

    Que ferait le responsable de service informatique que tu es (ton profil) si l'un des utilisateurs de son service faisait à peine le millième de ce qu'il fait là ?
    La réponse est dans la question.

    EDIT : et j'ose à peine te demander si tu sais ce que ferait le chef d'un organisme s'il découvrait que le responsable de service informatique agissait ainsi....

  8. #8
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 5
    Par défaut
    Je suis d'accord, je vais donc me débrouiller seul.

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Et au moins ne pas prendre l'habitude d'échanger des classeurs, sans connaître le risque induit pour toutes les machines qu'il gère et données dont il assure la sécurité, l'intégrité et la pérennité...

  10. #10
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    re,

    un exemple par rapport à la demande initial (dans mes classeurs toutes mes feuilles s’appellent "Feuil1")
    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
    Sub Exemple()
    Dim path As String, currentPath As String, MaValeur As Double, Addition As Double
    path = "D:\Reporting"
     
    currentPath = Dir(path, vbDirectory)
    Do Until currentPath = vbNullString
        If currentPath Like "*.xlsm" Then
        MaValeur = ExecuteExcel4Macro("'" & path & "[" & currentPath & "]" & "Feuil1'!" & Range("A1").Address(, , xlR1C1))
        Addition = Addition + MaValeur
        Debug.Print MaValeur
        End If
        currentPath = Dir()
    Loop
    Debug.Print Addition
    End Sub
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Cousinhub44 Voir le message
    Oui, j'ai évidement récupéré des infos à droite et à gauche. Quand on cherche, on va voir plein de trucs existants, on bidouille et j'essaie vraiment de comprendre mais je ne suis pas un expert vba. Je fais ce que je peux.
    Et prendre un peu de temps pour te former aux bases de ce langage n'est pas une option envisageable ? http://bidou.developpez.com/article/VBA/

  12. #12
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    'soir Cousinhub44,

    Rien à rajouter aux remarques de mes camardes programmeur mis à part que je suppose que tu es sur PC, et que tu as la chance de pouvoir utiliser directement l'aide VBA via la touche F1.
    Pour ce faire : positionner le curseur sur le terme dont veut les explications puis appuyer dur la touche F1
    Exemple : Like, Do ou bien Dir, etc …
    sauf les variables que l'on a créé permettant de gérer la donnée à travailler, … par contre tu peux voir dans la fenêtre des variables locales, lors du pas à pas du code, à quel type correspond ta variable et la valeur qu'elle affiche …

    Cela te permettra de mieux comprendre un code, en plus des bases vba que tu dois voir, tout t'a été fourni et la est une vrai mine d'or …

    PS : le code que je t'ai fourni permet de récupérer la valeur en A1 sans ouvrir les Fichiers
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  13. #13
    Membre à l'essai
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2017
    Messages : 5
    Par défaut
    Je n'étais pas venu ici pour me faire insulter. Et je pense remplir ma fonction correctement. Certains de tes camarades devraient réfléchir un peu plus avant de juger mon travail juste parce que j'ai demandé de l'aide pour une macro VBA. En revanche, je reconnais que j'aurais du travailler plus mon sujet avant mon post.
    je te remercie pour ton aide. Bonne continuation.

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Je n'étais pas venu ici pour me faire insulter.
    Ne voient partout des "insultes" (là où ne sont faites que des constatations) que ceux qui pensent qu'ils en mériteraient
    Et je pense remplir ma fonction correctement
    Reste à :
    - déterminer ce qui est "correct" (surtout concernant la charge acceptée)
    - bien cerner ce qu'est la fonction et ce qu'est celle d'un développeur
    "A chacun son métier ..." (je te laisse continuer ce dicton) et sa "responsabilité".
    Désolé d'être trop franc.

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

Discussions similaires

  1. Somme d'une même cellule sur plusieurs feuilles
    Par Veven1010 dans le forum Excel
    Réponses: 4
    Dernier message: 15/08/2016, 18h22
  2. Extraire des données d'une même cellule, dans plusieurs fichiers
    Par chicanne dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 31/07/2016, 12h06
  3. [XL-2003] Créer une macro pour plusieurs fichiers excel
    Par bocki dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 22h53
  4. Macro unique pour plusieurs fichiers excel
    Par jackbauer972 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 09/07/2007, 13h41
  5. [VBA-E]une macro unique pour plusieurs fichiers excel
    Par fanchic29 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/04/2006, 16h20

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