consolidation (VBA)

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

  • Suivi_01.xls
    23.5 KB · Affichages: 77

GBI

XLDnaute Occasionnel
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
 

job75

XLDnaute Barbatruc
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+
 

perdinch

XLDnaute Occasionnel
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
 

job75

XLDnaute Barbatruc
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:

perdinch

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 761
Messages
2 091 797
Membres
105 074
dernier inscrit
JPATOUNE