Synthèse de tableaux!

kiko974

XLDnaute Nouveau
Bonjour à tous,

J'ai 52 fichiers XLS (un par semaine pour l'année 2005 en cours)
Chaque fichier XLS comporte un seul feuillet dans lequel je renseigne chaque semaine un tableau comportant énormément d'informations.
Chaque feuillet est structuré à l'identique (colonne date, numéro de semaine, jour de la semaine, etc ...).

J'aimerais, à partir de ces 52 tableaux, n'en générer qu'un seul qui me servira de 'base de données' pour faire plein de stats (tableaux croisés dynamiques).

Ma question est: comment créer de façon automatisée ce tableau? (Comment invoquer et concaténer dans ce tableau synthèse, tous ces sous-tableaux??)

Je vous remercie pour votre aide précieuse.

A trés bientôt.

Kiko.
 

Dugenou

XLDnaute Barbatruc
Bonjour,

Soit tu fait une macro qui ouvre les 52 fichiers et qui récupère les valeurs, soit tu copie les 52 feuilles dans un seul classeur, soit tu utilises des liaisons vers les 52 fichiers.

A mon avis la solution 2 est préférable à la 3 (je ne sais pas faire la 1)

Quand tu as toutes les feuilles dans le même classeur, tu te mets dans la cellule de destination du résultat de ta feuille récapitulative, tu clique sur le bouton somme automatique, tu choisis la première feuille, tu appuie sur la touche Shift et tu cliques sur la dernière feuille et enfin tu choisi la cellule dont tu veux faire la somme. Ensuite tu recopie ta formule.

Exemple joint [file name=somme plusieurs feuilles_20050418155925.zip size=3774]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/somme plusieurs feuilles_20050418155925.zip[/file]
 

Pièces jointes

  • somme plusieurs feuilles_20050418155925.zip
    3.7 KB · Affichages: 27
J

JC de Lorient

Guest
Bonjour kiko974, Dugenou, le forum

voici une formule en macro
c un peu long mé ça marche
je me suis adapté d'un code de l'EXCELlent MyDearFriend

1) tu ranges ce classeur dans le répertoire ou sont tes classeurs que tu veux synthétiser

2) tu regarde le code pour les adapter a tes besoins surtout les references de cellules et le nom de tes feuilles

3) ensuite ALT+F8 macro transfert et tu laisses faire

Bon courage

JC
[file name=Classeur3_20050418184637.zip size=9119]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur3_20050418184637.zip[/file]
 

Pièces jointes

  • Classeur3_20050418184637.zip
    8.9 KB · Affichages: 37

kiko974

XLDnaute Nouveau
Bonjour et merci beaucoup pour vos réponses.

Je pense que la solution la plus adaptée et que je recherche est celle de JC de Lorient.

Peux-tu stp m'aider un peu sur le paramètrage de la macro? Car j'avoue m'y perdre carrément afin de paramétrer le nom des fichiers ainsi que les plages des feuilles.

Les données d'entrées sont les suivantes:

- les 52 fichiers sont tous nommes semaine01.xls, semaine02.xls, semaine03.xls ... semaine 52.xls. Ils sont bien entendu tous dans le même répertoire (celui également du fichier Classeur3.xls).

- Chaque fichier semainexx.xls comporte uniquement une seule feuille, dénommée Feuil1 (par défaut)

- Toutes les feuilles sont structurées à l'identique, les données sont comprises entre les cellules A1 et AF7

Merci beaucoup pour ton aide.

Amicalement,
Kiko.
 

kiko974

XLDnaute Nouveau
Salut à tous! Je sais, je ne suis pas vraiment doué pour modifier la macro mais si quelqu'un arrivait à m'aider ce serait tip-top!

JC de Lorient! au secours! ;)

Voici la macro:

Option Explicit
Dim Fichiers As Object, Classeur As Object, N As Integer
Dim ListeClasseurs As New Collection
Dim C As Range
Dim Chemin As String

Sub transfert()


'Lister les Classeurs du dossier
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Set Fichiers = CreateObject('Scripting.FileSystemObject').getfolder(Chemin).Files
For Each Classeur In Fichiers
If Right(Classeur.Name, 3) = 'xls' Then
If Classeur.Name <> ThisWorkbook.Name Then
ListeClasseurs.Add Classeur.Name
End If
End If
Next
'Rechercher la valeur dans chaque classeur

' ATTENTION AUX NOMS DE CLASSEURS ET DE FEUILLES

For N = 1 To ListeClasseurs.Count
Application.EnableEvents = False
Workbooks.Open Chemin & '\\' & ListeClasseurs(N)
Application.EnableEvents = True
With ActiveWorkbook
Worksheets('Feuil1').Activate

'ATTENTION A LA SELECTION DES CELLULES A COPIER

Range('a1', Range('g65000').End(xlUp)).Copy
Workbooks('Classeur3.xls').Activate
Worksheets('Récup').Activate
Range('a65000').End(xUp).PasteSpecial

.Close True
End With
Next N
End Sub



MERCI ++++++++ !

Kiko
 
J

JC de Lorient

Guest
Re bonjour
les modif sont a apporter içi

Classeur3 = au nom du classeur de synthèse
Récup = le nom de la feuille qui recoit les données copiées
Range('a1:AF7').copy : copie les données de chaque classeur
Range('a65000').End(xUp)(1).PasteSpecial colle les données à la suite en laissant 1 ligne entre chaque copie
si tu n'en veux pas supprime le (1)


Range('a1:AF7').Copy
Workbooks('Classeur3.xls').Activate
Worksheets('Récup').Activate
Range('a65000').End(xUp)(1).PasteSpecial
en espérant que tout soit clair

JC
 

kiko974

XLDnaute Nouveau
Salut! Je n'ai toujours pas réussi à faire fonctionner la macro, je commence à me remettre en cause, héhéhé !!
Dans mon répertoire j'ai simplement le fichier comportant la macro (classeur3.xls) et mes fichiers que je veux concaténer dans classeur3.xls, de la forme semaine01.xls, semaine02.xls, etc ...

Voici le code actuel ... j'ai commencé à modifier certains paramètres, mais ça ne passe toujours pas, j'ai sans doute du oublier quelquechose!

Sub transfert()

'Lister les Classeurs du dossier
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path
Set Fichiers = CreateObject('Scripting.FileSystemObject').getfolder(Chemin).Files
For Each Classeur In Fichiers
If Right(Classeur.Name, 3) = 'xls' Then
If Classeur.Name <> ThisWorkbook.Name Then
ListeClasseurs.Add Classeur.Name
End If
End If
Next
'Rechercher la valeur dans chaque classeur

' ATTENTION AUX NOMS DE CLASSEURS ET DE FEUILLES

For N = 1 To ListeClasseurs.Count
Application.EnableEvents = False
Workbooks.Open Chemin & '\\' & ListeClasseurs(N)
Application.EnableEvents = True
With ActiveWorkbook
Worksheets('Feuil1').Activate

'ATTENTION A LA SELECTION DES CELLULES A COPIER

Range('a1', 'af7').Copy
Workbooks('Classeur3.xls').Activate
Worksheets('Récup').Activate
Range('a65000').End(xUp)(1).PasteSpecial

.Close True
End With
Next N
End Sub
 
J

JC de Lorient

Guest
Bonsoir !

surprenant! très surprenant!!

je te propose que tu postes un fichier zippé de moins de 50k sab=ns accent ni ponctuation avec 2 ou 3 de tes classeurs

je verrai ce que ça donne

içi ça marche bien et j'adapterai le code en fonction

JC
 

kiko974

XLDnaute Nouveau
Salut !!

Voici un zip comprenant le fichier-récupération macro ainsi que deux fichiers types ... je ne pensais pas que c'était aussi difficile de faire de plusieurs fichiers, un seul fichier ;o)

Je te remercie beaucoup pour ton aide !!

A trés bientôt, bonne journée.

Kiko [file name=synthese.zip size=12453]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/synthese.zip[/file]
 

Pièces jointes

  • synthese.zip
    20.2 KB · Affichages: 30
  • synthese.zip
    20.2 KB · Affichages: 26
  • synthese.zip
    20.2 KB · Affichages: 28
J

JC de Lorient

Guest
Bonjour Kiko, le forum

voilà j'ai modifié le fichier
en effet quelques erreurs étaient présentent
là tout doit marcher
le seul souci je n'ai pas pu désactiver la sauvegarde du presse papier
si qq1 a la soluce suis preneur
donc tu vas te taper 52 fois le click sur non a l'afichage du message

ça devrait kan même aller

Bon courage
JC [file name=synthese_20050421095902.zip size=16209]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/synthese_20050421095902.zip[/file]
 

Pièces jointes

  • synthese_20050421095902.zip
    15.8 KB · Affichages: 25

kiko974

XLDnaute Nouveau
Hello, merci pour ta réponse éclair.

Es-tu certain que le zip soit le dernier qui fonctionne?
Ici, toujours le même souci, voici le message d'erreur lors de l'exécution de la macro:

Erreur de compilation: variable non définie

Faisant référence à xUP de la ligne Range('a65000').End(xUp)(1).PasteSpecial

Pour information, j'utilise la version 2003 d'EXCEL et le niveu de sécurité des macros est au plus bas (par précaution).

Voilà voilà, je suis certain que on va yarriver !!

Merci encore pour tout.

Kiko
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 611
Messages
2 090 226
Membres
104 453
dernier inscrit
benjiii88