Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

consolidation (VBA)

  • Initiateur de la discussion Initiateur de la discussion perdinch
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

perdinch

XLDnaute Occasionnel
Bonjour,

je cherche à automatiser l'importation de données contenues dans 40 classeurs struturés de facon identiques mais pouvant contenir un nb de lignes différent.
Les 40 classeurs sont enregistrés dans un repertoire nommé "COMPIL"
Le nom de chaque classeur commence par "Suivi_" suivi d'un nombre
ex Suivi_01
Le chemin d'accès à ce repertoire est : c:\
Les données sont stockées dans l'onglet nommé "DATA"
Le nombre de colonne est de 08 soit de A à H
Le nombre de ligne de chaque classeur est variable

L'idée est donc de faire une consolidation (via VBA) en récupérant dans un nouveau classeur toutes les données des classeurs situés dans c:\COMPIL et dont le nom commence par "Suivi_".La feuille contenant les données de chaque classeur se nomme "DATA".


Merci de vos propositions

cordialement

Perdinch
 

Pièces jointes

Re : consolidation (VBA)

Bonjour Perdinch

Peux-tu nous fournir un exemple de ta source de données initiale (plusieurs onglets data) et du résultat désiré (somme, liste exhaustive avec identification du fichier source etc.)
A bientot de te lire
Cdt
Gbi
 
Re : consolidation (VBA)

Bonjour,

Ce problème a été maintes fois traité sur XLD.

Regardez déjà les discussions en bas de cette page.

Et aussi faites une recherche avec les mots Fusion classeurs.

Edit : salut GBI

A+
 
Re : consolidation (VBA)

Réponse à JOB 75

J'ai parcouru le forum et je n'ai pas trouvé de réponses satisfaisantes.
En parcourant le net j'ai trouvé ce code qui paraissait intéressant mais il provoque une erreur 1004 sur la ligne "Workbooks.open Fich"

Peut-être avez vous une idée .

Sub test3()
Dim Fich As String, Ligne As Double
Fich = Dir("C:\Suivi*.xls")
Do While Fich <> ""
Ligne = Range("a65536").End(xlUp).Row + 1
Workbooks.Open Fich
Range("A3", Range("H65536").End(xlUp)).Copy _
ThisWorkbook.Sheets(1).Cells(Ligne, 1)
ActiveWorkbook.Close False
Fich = Dir
Loop
End Sub
 
Re : consolidation (VBA)

Re,

Bravo mais il y a en effet une erreur dans le code (il y a mieux sur XLD).

Fich c'est le nom du classeur sans le chemin d'accès.

Un code plus général :

Code:
Sub test3()
Dim chemin As String, Fich As String, Ligne As [COLOR="Red"]Long[/COLOR]
chemin = "C:\" 'à adapter au besoin
Fich = Dir(chemin & "Suivi*.xls")
[COLOR="Red"]Application.ScreenUpdating = False 'fige l'écran[/COLOR]
Do While Fich <> ""
Ligne = Range("a65536").End(xlUp).Row + 1
Workbooks.Open chemin & Fich
Range("A3", Range("H65536").End(xlUp)).Copy _
ThisWorkbook.Sheets(1).Cells(Ligne, 1)
ActiveWorkbook.Close False
Fich = Dir
Loop
End Sub

Edit : et puis figer l'écran (en rouge)

A+
 
Dernière édition:
Re : consolidation (VBA)

Merci ca marche!

Juste un complément : Est il possible de fermer le fichier DONT les données sont copiés au fur et à mesure (selui nommé suivi_01...) .Cela évite d'en avoir une quarantaine d'ouverts simultanément.

j'ai éssayé ça "Workbook.Close = chemin & Fich" avant le "loop" mais ca ne fonctionne pas

MERCI

PERDINCH
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
20
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
449
Réponses
9
Affichages
882
Réponses
3
Affichages
653
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…