Somme de cellules de différents fichiers

Bonjour à toutes et à tous,

je reviens vers vous car j'ai trouvé un super code, mais il ne veut pas du tout se lancer. Je fais '"pas à pas détaillé" et je débogue, mais le curseur ne va pas plus loin que "Sub macro1"....

Voici le code macro :

Sub Macro1()

Dim NomFichier As String, CheminFichier As String
Dim FichierOpen As String 'Pour le chemin avec le fichier à ouvrir

CheminFichier = " " 'Chemin du répertoire des fichiers ex "c:\Excel\

NomFichier = Dir(CheminFichier)

    Do While NomFichier <> ""  ' parcours la liste de tes fichiers d'extension .xls
       If Right(NomFichier, 4) = ".xls" Then

           FichierOpen = CheminFichier & NomFichier
           Workbooks.Open FichierOpen 'Ouverture du fichier à lire
        'Copie dans la cellule C3 (du nouveau fichier) la cellule C3 du fichier xls additionnée du contenu
        'A adapter avec le format de ta feuille excel et à copier autant de fois pour toutes les cellules à copier
           ThisWorkbook.Sheets(1).Range("C3").Value = _
           ThisWorkbook.Sheets(1).Range("C3").Value + Workbooks(NomFichier).Sheets(1).Range("C3").Value

           Workbooks(NomFichier).Close

          End If
        NomFichier = Dir
    Loop

End Sub

Si vous comprenez d'où viens le soucis, je suis preneur !!! Merci à vous

bonjour,

pour t'aider à résoudre ton souci

1) quel est le message d'erreur ?

2) peux-tu nous mettre ton classeur ?

Bonjour,

Il n'y a pas de messages d'erreur en fait. Je vous joins les fichiers.

Le but étant que dans la cellule C3 du fichier "classeur autofill" il y ait la somme des cellules C3 des fichiers A,B et C.

L'idée est que j'active la macro, hop les fichiers s'ouvrent, ça calcule, ça se referme et j'ai mon résultat en C3.

1classeur-a.xlsx (8.91 Ko)
1classeur-b.xlsx (8.91 Ko)
1classeur-c.xlsx (8.91 Ko)

Bonjour,

comme tes fichiers semblent être des fichiers .xlsx et non .xls

remplace cette instruction

If Right(NomFichier, 4) = ".xls" Then

par

If Right(NomFichier, 5) = ".xlsx" Then

Ha bien vu, je viens de changer mais aucune réaction de la part de VBA, j'exécute j'exécute mais rien ne bouge. Même pas de messages d'erreur...

BOnjour,

c'est qu'il ne trouve aucun fichier qui correspond aux critères dans le répertoire indiqué, je suppose que tu complètes bien cette instruction par un nom de répertoire valable. Si tu veux le répertoire par défaut, mets "" et non " "

CheminFichier = " " 'Chemin du répertoire des fichiers ex "c:\Excel\

Bonjour,

En effet, j'ai bien mon répertoire ( que je n'ai pas communiquer ici ) mais que je mette le répertoire ou rien "", c'est exactement la même chose

rebonjour,

il faut mettre un "\" à la fin du nom du répertoire

et si tu adaptes cette instruction

NomFichier = Dir(CheminFichier)

ainsi, plus besoin du test sur l'extension

NomFichier = Dir(CheminFichier & "\*.xlsx")
Sub Macro1()

Dim NomFichier As String, CheminFichier As String
Dim FichierOpen As String 'Pour le chemin avec le fichier à ouvrir

CheminFichier = " " 'Chemin du répertoire des fichiers ex "c:\Excel\

NomFichier = Dir(CheminFichier & "\*.xlsx")

    Do While NomFichier <> ""  ' parcours la liste de tes fichiers d'extension .xls

           FichierOpen = CheminFichier & NomFichier
           Workbooks.Open FichierOpen 'Ouverture du fichier à lire
        'Copie dans la cellule C3 (du nouveau fichier) la cellule C3 du fichier xls additionnée du contenu
        'A adapter avec le format de ta feuille excel et à copier autant de fois pour toutes les cellules à copier
           ThisWorkbook.Sheets(1).Range("C3").Value = _
           ThisWorkbook.Sheets(1).Range("C3").Value + Workbooks(NomFichier).Sheets(1).Range("C3").Value

           Workbooks(NomFichier).Close

        NomFichier = Dir
    Loop

End Sub

C'est géniale car ça marche !!! Franchement merci beaucoup !!!

Juste une dernière question, là ça me remplie une cellule, mais si je souhaite remplir les 16 cellules de mon tableau de la même manière, comment faire ?

Autrement dit sur une plage donnée, j'ai tenté un truc soit via autofill ou en intégrant la plage dans range en mode Range("C3:F6")

Bien sur ça serait trop simple.

Peut être une boucle, mais je constate qu'il faut toujours des conditions pour réaliser une boucle. Or je n'ai pas de conditions hormis la délimitation de ma plage

bonjour,

une proposition

Sub Macro1()

    Dim NomFichier As String, CheminFichier As String, i&, j&
    Dim FichierOpen As String    'Pour le chemin avec le fichier à ouvrir

    CheminFichier = " "    'Chemin du répertoire des fichiers ex "c:\Excel\

    NomFichier = Dir(CheminFichier & "\*.xlsx")

    Do While NomFichier <> ""  ' parcours la liste de tes fichiers d'extension .xls

        FichierOpen = CheminFichier & NomFichier
        Workbooks.Open FichierOpen    'Ouverture du fichier à lire
        'Copie dans la cellule C3 (du nouveau fichier) la cellule C3 du fichier xls additionnée du contenu
        'A adapter avec le format de ta feuille excel et à copier autant de fois pour toutes les cellules à copier
        Workbooks(NomFichier).Sheets(1).Range("C3:F6").Copy
        ThisWorkbook.Sheets(1).Range("C3:F6").PasteSpecial Paste:=xlPasteAll, Operation:=xlAdd, SkipBlanks:= _
                                              False, Transpose:=False
        Workbooks(NomFichier).Close

        NomFichier = Dir
    Loop

End Sub

Bonjour h2so4,

Un grand grand MERCI à toi, le code est merveilleux. Court, simple à comprendre. En l'essayant ce matin j'ai presque eu la larme à l'oeil.

C'est juste génial.

Encore merci et une bonne continuation à toi !!!!

Rechercher des sujets similaires à "somme differents fichiers"