Consolidation de plusieurs classeurs en un seul

Bonjour à tous,
je viens vers vos connaissances si vous pouviez m’aider…
en gros j’ai 5 fichiers identiques (1/poste) avec différentes feuilles dont une “1-Récap et calcul”, cette dernière à la même structure dans les 5 fichiers (c’est celle dont je voudrais récupérer les infos) dans un 6 ème fichier.
voici les noms de mes fichiers:

-SIBA
-SINI
-SITU
-SIJO
-SIWA

Le fichier de destination s’appelle “consolidation” et la feuille de destination aussi ("consolidation)

Voici un code que j’ai pu trouver sur le web et que j’essaie d’adapter mais rien n’y fait…
il construit bien ma feuille avec les colonnes et entêtes mais aucune importation ne se fait

Option Explicit
Sub consolider()
’ Procédure permettant la consolidation de plusieurs classeurs

Dim wbk As Workbook
Dim wshScr As Worksheet
Dim wshDst As Worksheet
Dim celDst As Range
Dim chemin As String
Dim nomClasseur As String
Dim derLigne As Long

’ On désactive le raffraichissement de l’écran
Application.ScreenUpdating = False
’ Définition de la feuille de destination
Set wshDst = ThisWorkbook.Worksheets(“consolidation”)
’ Etape n°1 : création des en-têtes
'Réinitialisation du fichier de synthèse des classements
With wshDst
.Columns(“A:CO”).Clear
.Range(“A2”).Value = “Nom”
.Range(“B2”).Value = “Prénom”
.Range(“C2”).Value = “Poste”
.Range(“D2”).Value = “N°”
.Range(“E2”).Value = “P/V”
.Range(“F2”).Value = “Grade”
.Range(“G2”).Value = “Points finaux”
.Range(“H2”).Value = “ctrl YST”
.Range(“I2”).Value = “Veste”
.Range(“J2”).Value = “Veste taille”
.Range(“K2”).Value = “Pantalon”
.Range(“L2”).Value = “Pantalon taille”
.Range(“M2”).Value = “T-shirt”
.Range(“N2”).Value = “T-shirt taille”
.Range(“O2”).Value = “Polo MC”
.Range(“P2”).Value = “Polo MC taille”
.Range(“Q2”).Value = “Polo ML”
.Range(“R2”).Value = “Polo ML taille”
.Range(“S2”).Value = “Sweat”
.Range(“T2”).Value = “Sweat taille”
.Range(“U2”).Value = “Pull raz du cou”
.Range(“V2”).Value = “Pull raz du cou taille”
.Range(“W2”).Value = “Pull col tirette”
.Range(“X2”).Value = “Col tir. taille”
.Range(“Y2”).Value = “Chaussette été”
.Range(“Z2”).Value = “Chau été taille”
.Range(“AA2”).Value = “Chaussette hiver”
.Range(“AB2”).Value = “Chau hiver taille”
.Range(“AC2”).Value = “Chaussure haute tige”
.Range(“AD2”).Value = “Chau Ht taille”
.Range(“AE2”).Value = “Chaussure sécu”
.Range(“AF2”).Value = “Chau sécu taille”
.Range(“AG2”).Value = “Chaussure mocassin”
.Range(“AH2”).Value = “Chau mocassin taille”
.Range(“AI2”).Value = “Ceinture”
.Range(“AJ2”).Value = “Grade poitrine”
.Range(“AK2”).Value = “Grade poitr type”
.Range(“AL2”).Value = “Grades épaules”
.Range(“AM2”).Value = “Grades ép. type”
.Range(“AN2”).Value = “Nominette”
.Range(“AO2”).Value = “Sous vêtement T-shirt”
.Range(“AP2”).Value = “Ss vêt t-shirt taille”
.Range(“AQ2”).Value = “Sous vêtement caleçon”
.Range(“AR2”).Value = “Ss vêt caleçon taille”
.Range(“AS2”).Value = “Chaussure de sport”
.Range(“AT2”).Value = “Chauss sport taille”
.Range(“AU2”).Value = “Short sport”
.Range(“AV2”).Value = “Short sport taille”
.Range(“AW2”).Value = “Vareuse sortie”
.Range(“AX2”).Value = “Vareuse de sortie taille”
.Range(“AY2”).Value = “Pantalon de sortie”
.Range(“AZ2”).Value = “Pant sortie taille”
.Range(“BA2”).Value = “Képi”
.Range(“BB2”).Value = “Képi taille”
.Range(“BC2”).Value = “Chemise blanche MC”
.Range(“BD2”).Value = “Chem Bla MC taille”
.Range(“BE2”).Value = “Chemise blanche ML”
.Range(“BF2”).Value = “Chem Bla ML taille”
.Range(“BG2”).Value = “Chemise bleue MC”
.Range(“BH2”).Value = “Chem Ble MC taille”
.Range(“BI2”).Value = “Chemise bleue ML”
.Range(“BJ2”).Value = “Chem Ble ML taille”
.Range(“BK2”).Value = “Chaussure de ville lacet”
.Range(“BL2”).Value = “Chau ville lac taille”
.Range(“BM2”).Value = “Chaussure de ville mocassin”
.Range(“BN2”).Value = “Chau ville Moc taille”
.Range(“BO2”).Value = “Cravatte”
.Range(“BP2”).Value = “Gants noirs”
.Range(“BQ2”).Value = “Gants noirs taille”
.Range(“BR2”).Value = “Gants blancs”
.Range(“BS2”).Value = “Gants blancs taille”
.Range(“BT2”).Value = “Epaulibres”
.Range(“BU2”).Value = “Casquette”
.Range(“BV2”).Value = “Bonnet”
.Range(“BW2”).Value = “Bretelles”
.Range(“BX2”).Value = “Softshell”
.Range(“BY2”).Value = “Softshell taille”
.Range(“BZ2”).Value = “Couteau mulit fonction”
.Range(“CA2”).Value = “Lampe torche led”
.Range(“CB2”).Value = “Lampe frontale”
.Range(“CC2”).Value = “Sangle Rhinoevac”
.Range(“CD2”).Value = “Ciseaux ambu”
.Range(“CE2”).Value = “Stétoscope”
.Range(“CF2”).Value = “Solde points”
.Range(“CG2”).Value = “Total tenue de service”
.Range(“CH2”).Value = “Total sport”
.Range(“CI2”).Value = “Total cérémonie”
.Range(“CJ2”).Value = “Total accessoires”
.Range(“CK2”).Value = “Total points”
.Range(“CL2”).Value = “Solde calculé”
.Range(“CM2”).Value = “Quota accessoires > 20%”
.Range(“CN2”).Value = “Report > 10%”
.Range(“CO2”).Value = “Dépassement”
’ On définit la cellule de destination des données
Set celDst = .Range(“A3”)
End With

’ Etape n° 2 : Parcourir tous les fichiers du dossier prédéfini
chemin = ThisWorkbook.Path & “consolidation”
’ On cherche le premier classeur dans le dossier
nomClasseur = Dir(“C:\Users\Vincent\Desktop\consolidation” & “*xlsm”)
’ On boucle pour chercher tous les classeurs
Do While Len(nomClasseur) > 0
If nomClasseur <> ThisWorkbook.Name Then
Set wbk = Workbooks.Open(“C:\Users\Vincent\Desktop\consolidation” & “*xlsm”) 'Ouverture du Classeur
On Error Resume Next
Set wshScr = wbk.Worksheets(“1-Récap et Calcul”) 'Définis la feuille de calcul consolidation
On Error GoTo 0
If Not wshScr Is Nothing Then
With wshScr
derLigne = .Cells(.Rows.Count, “A”).End(xlUp).Row 'Numéro de le derniere ligne de données
Range(“A4:CO” & derLigne).Copy celDst 'Copie de toutes les données
End With
’ On définit la prochaine cellule de destination des données
Set celDst = celDst.Offset(derLigne - 2)
End If
wbk.Close False ’ Fermeture du classeur ouvert sans le modifier
nomClasseur = Dir ’ On passe au prochain classeur
End If
Loop
MsgBox " Consolidation terminée "
’ On ré-active le raffraichissement de l’écran ’
Application.ScreenUpdating = True

End Sub

Bonsoir,

Si je comprend ta macro, tu as un dossier nommé consolidation sur ton bureau dans lequel se trouvent tes cinq fichiers (SIBA, SINI, SITU, SIJO et SIWA).
Si c’est le cas, je pense qu’il faut modifier les lignes donnant le chemin de cette façon.
(“C:\Users\Vincent\Desktop\consolidation\” & “*xlsm”) il faut indiquer à excel le dossier avec un \

Sinon regarde ce lien qui explique le même problème que le tien ( vers le paragraphe Se placer dans un dossier : ChDir)
: http://www.info-3000.com/vbvba/syntheseplusieursclasseurs/index.php
Bon courage,
Cordialement.

Bonjour Zebulon, merci pour tes conseils mais même avec les changements ça ne fonctionne pas et je ne comprends pas grand chose sur le lien, je ne vois pas ou et comment intégrer la ligne de code ChDir.

Bonjour,

Quel est le chemin exact pour accéder à tes fichiers ? Pour l’obtenir dans l’explorateur fait un clic droit en maintenant la touche MAJ enfoncé et clic sur Copier en tant que chemin d’accès.
Cordialement.

Bonjour, voici la ligne:
“C:\Users\Vincent\Desktop\consolidation”
je l’ai copiée/collée mais toujours rien…
Le code n’est peut être pas le bon pour ce que je veux en faire?

Il en manque un bout, tu devrais plutôt obtenir quelque chose comme ça :
“C:\Users\Vincent\Desktop\consolidation\SIBA.xlsm”

Peux tu mettre une copie du fichier récap et au moins un de tes fichiers en pièces jointes ?

Formulaires CONSOLIDATION.xlsm (670,2 Ko) SIBA.xlsm (654,0 Ko)

voici

Ta syntaxe n’a pas l’air bonne, tu cherches à ouvrir :
nomClasseur = Dir(“C:\Users\Vincent\Desktop\consolidation*.xlsx”)
alors que tes fichiers sont en .xlsm
modifies ta macro en conséquence et testes.
nomClasseur = Dir(“C:\Users\Vincent\Desktop\consolidation*.xlsm”)
Cordialement.

Bonjour, me revoilà.
toujours dans la galère malgré de multiples adaptations.
si vous avez des idées je suis preneur, là j’ai un message d’erreur “pas assez de mémoire, libérez de l’espace” ect… je n’y comprends plus rien!

Bonsoir,
Ce message, à quel moment apparait - il, et est ce seulement avec ce fichier ?
Remets tes fichiers et une copie de l’environnement où chercher ces fichiers.
Cordialement.

Bonsoir à tous,
Le problème vient du fait que tu ne vides pas la mémoire
Regarde un peu dans ta macro (qui pourrait être clairement simplifiée)
le nombre de SET
A chaque fois que tu déclares un SET, il prend une place en mémoire,
mais tu ne la délivre pas en fin de boucle
donc

commence déjà par mettre SET ****= NOTHING à chaque déclaration

Bonjour, j’ai essayé ta solution mais ça ne change rien…
si tu as un code plus simple a utiliser je suis preneur…
je joints mes fichiers si tu veux.

Déjà un grand Merci
Consolidation.xlsm (22,8 Ko) SIBA.xlsm (253,5 Ko)

SIJO.xlsm (593,8 Ko) SIWA.xlsm (600,7 Ko)

SITU.xlsm (593,8 Ko) SINI.xlsm (593,8 Ko)

Bonjour,

Je viens de tester chez moi, tout à l’air de fonctionner. Vérifie ton environnement et tes chemins de fichiers.

Chez moi, création de dossier Consolidation dans mes documents et copie des cinq fichiers.
(dans ton message SITU et SINI renvoient vers SIJO)
Cordialement.
Consolidation.xlsm (82,6 Ko)

bonjour zebulon, qu’entends-tu par “Vérifie ton environnement”?

Que tes chemins soient bien écrits dans ta macro et que tu ais bien toutes les autorisations pour lire ou écrire dans le dossier consolidation.

Oui tout est correct, vois le message d’erreur…Doc1.pdf (267,2 Ko)

Mimmimathy, ça semble fonctionner!!!
Merci beaucoup à tous les deux pour votre aide :muscle::muscle:

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.