VBA - Consolidation de fichiers

Fermé
isa51 Messages postés 2 Date d'inscription lundi 17 septembre 2012 Statut Membre Dernière intervention 17 juillet 2013 - 17 juil. 2013 à 11:31
Le Pingou Messages postés 12150 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 septembre 2024 - 18 juil. 2013 à 17:49
Je souhaite consolider automatiquement (sans avoir à indiquer manuellement chaque plage à consolider dans la fonction "Consolidation") la même feuille de chaque classeur : la feuille A du classeur 1, la feuille A du classeur 2, etc... Les plages à consolider sont les mêmes sur chaque feuille, je souhaite faire la somme de toutes les plages.

J'ai créé la macro ci-dessous mais elle ne fonctionne pas, help !

Sub Consolidation()
Dim fichier As String
chemin = ActiveWorkbook.Path
fichier = Dir(chemin & "\" & "*.xls")

Application.ScreenUpdating = True
Do While fichier <> ""
Range("B2:B11").Consolidate Sources:="[" & fichier & "]" & "!B2:B11", Function:=xlSum
fichier = Dir()

Loop

Application.ScreenUpdating = True
End Sub
A voir également:

4 réponses

Le Pingou Messages postés 12150 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 septembre 2024 1 447
17 juil. 2013 à 22:58
Bonjour,
Combien de classeurs .... ?
Qu'elle est le nom du classeur maître ... ?
Il y a bien l'outil de données [Consolider] mais je ne sais pas où vous avez trouvé la fonction [Consolidation] ?

0
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 7 235
Modifié par eriiic le 18/07/2013 à 00:04
Bonsoir,

Non mélanie, la fonction dir() avec le Do... Loop permet de balayer les fichiers d'un répertoire.

@isa51
Ceci dit il manque apparemment l'indication du chemin dans le Consolidate, et l'indication de la feuille. De plus pas sûr que la fonction travaille sur les classeurs fermés (?)
Dans un premier temps essaie en ouvrant les classeurs. Quand cette partie fonctionnera il sera temps de tenter avec classeurs fermés.

Si pour ActiveWorkbook tu penses ce classeur avec la macro utilises Thisworkbook. Et penses à tester le nom du fichier s'ils sont tous dans le même répertoire, de façon à ne pas consolider celui de la macro.
eric

edit:
ici une syntaxe complète qui a l'air de tourner.
Regarde comment est désignée la source dans le Validate, à-priori il te manque bien chemin et feuille.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
Le Pingou Messages postés 12150 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 septembre 2024 1 447
18 juil. 2013 à 17:49
Bonjour à tous,
En attendant une réponse de [isa51]....!
En fait, pas besoin de macro si vous utilisez la possibilité de l'outil de données consolider comme suit :
Pour que la consolidation soit mise à jour automatiquement lorsque les données sources d'un autre classeur changent, activez la case à cocher Lier aux données sources.
0
melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
17 juil. 2013 à 22:54
Coucou,

ta macro ne peux pas fonctionner parce que tu n'as pas défini le nom des fichiers.

je vais prendre un exemple, c'est plus simple.

Dis ons que tu es sur le fichier qui s'appelle classeur1.xls et qui se trouve dans C:\documents.

Tu lances ta macro, voici ce qu'elle fait

chemin = ActiveWorkbook.Path ==>chemin= C:\documents

fichier = Dir(chemin & "\" & "*.xls") ==> fichier = C:\documents\.xls

tu es d'accord avec moi qu'il manque quelque chose??

il faut que définisses une variable avec le nom de fichier comme ceci :

chemin = ActiveWorkbook.Path
nomfichier = "Calasseur2.xls")
fichier = Dir(chemin & "\" & nomfichier)


Comprends tu?
-1