AIde pour consolidation de plusieurs fichiers
Bonjour tout le monde !
Je creer ce nouveau topic sur le conseil de Claude car j'ai besoin d'aide pour la suite de mon projet.
Claude m'a créé ce code qui permet de recuperer les lignes saisie dans differente feuilles et de les ajouter les une à la suites des autres dans une feuille nommée "récap"
Sub Récap()
Dim i%, Sauf
Sauf = Array("Récap", "demande") 'feuilles à ne pas traiter (à régler)
Application.ScreenUpdating = False
With Sheets("Récap")
.Range("b4:n" & .[b65000].End(xlUp).Row + 1).Clear 'efface
For i = 1 To Worksheets.Count
If IsError(Application.Match(Worksheets(i).Name, Sauf, 0)) Then
Sheets(i).Range("b4:n" & Sheets(i).[b65000].End(xlUp).Row + 1).Copy Destination:= _
.Range("b" & Rows.Count).End(xlUp)(2)
End If
Next i
End With
End Subj'ai utilisé ce code dans 12 fichiers nommés "janvier", "fevrier" ... jusqu'à "decembre" et j'ai maintenant besoin d'aide pour adapter ce code afin de creer un fichier nommé "suivi prod thermo" qui soit en mesure de venir récuperer de la meme maniere toutes les lignes des feuilles "récap" de chanque fichier de l'année.
je vous met en piece jointe le fichier "janvier" et le fichier "suivi prod thermo"
je ne me rend pas compte si c'est compliqué d'adapter ce code ou si il s'agit simplement de donner des sources et des destinations différentes mais je ne vois pas comment reussir à le faire afin de compiler les infos de chacunes des feuilles "récap" de chaque mois dans un seul fichier.
merci d'avance à tous !
Bonsoir,
As tu essayer d utiliser la fonction ActiveWorkbook.Name ?
salut !
non, je ne connais absolument rien en VBA ou en macro, je suis un gros novice à qui on demande des trucs compliqués alors je me débrouille comme je peux en me faisant aider :/
le code de Claude fonctionne vraiment bien à l’intérieur d'un même fichier excel, il n'y a pas moyen de l'adapter pour qu'il aille chercher les infos dans un autre fichier ?
merci d'avance et excusez moi, je suis vraiment un novice et je ne maitrise pas tous les termes techniques
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour à tous,
1) créer un répertoire (ici, "Suivi prod thermo_2011")
2) dans ce répertoire, placer les fichiers "1_janvier", "2_février","3_Mars" etc... (on met les indices 1,2,3 etc.. pour tri)
3) dans ce répertoire, placer aussi ce fichier "Récap Annuelle"
Pour 2012, même chose en remplaçant le nom du répertoire "Suivi prod thermo_2012"
"Récap Annuelle" n'est pas à modifier ni renommer selon les années,
il est juste à copier dans le répertoire.
à noter que le fait de lancer à l'ouverture de chaque fichier mensuel, la macro "Récap" (Open), ralenti le traitement,
est-ce bien utile ?
Je reste persuadé qu'un seul fichier, avec filtre semaine ou mois aurait été plus simple d'emploi
mais bon !
Amicalement
Claude
Bonjour tout le monde !
je ne sais comment te remercier Claude, c'est nickel !!
alors, oui, j'ai lancé la macro automatiquement sur chacun des fichiers mensuels pour éviter de faire faire des manipulations à des gens qui n'y connaissent rien, on verra si ça fonctionne ou pas comme ça.
merci encore de t'être occupé de mon problème.
@+ et bonne soirée
bonjour tout le monde !
je me permet de relancer ce sujet car j'aurais besoin de deux petites explications au sujet de ce code :
Sub Archive() 'les "Récap" mensuelles de l'année du répertoire
Dim i%, NbC%
Dim FName$, Chemin$, NomFichier$, Wbk$
Wbk = ActiveWorkbook.Name
Range("a2:a1000").Clear 'efface liste fichiers
'--- Liste les fichiers du répertoire sauf celui-ci ---
Chemin = ActiveWorkbook.Path & "\"
FName = Dir(Chemin & "*.xl*")
Do While FName <> ""
If FName <> Wbk Then Range("a65536").End(xlUp)(2) = FName
FName = Dir
Loop
If Range("a2") = "" Then MsgBox ("Pas de fichiers dans le répertoire !"): Exit Sub
'----------------------------------------
Application.ScreenUpdating = False
NbC = Range("a65536").End(xlUp).Row
With Sheets("RécapAnnuelle")
.Range("b4:n" & .[b65000].End(xlUp).Row + 1).Clear 'efface données
For i = 2 To NbC
NomFichier = Cells(i, 1)
Application.DisplayAlerts = False 'si déjà ouvert
Workbooks.Open Filename:=Chemin & NomFichier
Application.DisplayAlerts = True
'--- action ---
.Range("b" & Rows.Count).End(xlUp)(2) = NomFichier
.Range("b" & Rows.Count).End(xlUp).Resize(1, 13).Interior.ColorIndex = 8
Sheets("Récap").Range("b4:n" & Sheets("Récap").[b65000].End(xlUp).Row + 1).Copy Destination:= _
.Range("b" & Rows.Count).End(xlUp)(2)
ActiveWorkbook.Close False
Next i
End With
End Suble bouton executant la macro doit obligatoirement etre placé sur la feuille ou sont listés les fichiers car la liste des fichiers du repertoire est créée sur la feuille active au moment ou on lance la macro, est il possible de d'indiquer une feuille fixe dans le code afin de permettre de mettre le bouton qui lance la macro sur n'importe quelle feuille mais que la liste des fichiers du repertoire soit toujours sur la meme feuille (une feuille cachée par exemple) ?
le fichier récap annuel doit etre placé dans le repertoire ou sont stockés les fichiers mensuels car le code lui dit de lister les fichiers du repertoire : Chemin = ActiveWorkbook.Path & "\"
comment doit-je ecrire le chemin réseau à la place du "\" pour déplacer le fichier dans un autre repertoire mais qu'il continue de lister les fichiers du repertoire initial ?
merci d'avance
hola !
pour faire avancer le sujet, j'ai déja trouvé tout seul comme un grand comment indiquer un repertoire différent du repertoire actif : en ecrivant : Chemin = "C:\Users\nch\Desktop\indicateur rame thermofix\" par exemple.
il reste juste le probleme de la macro qui s'éxecute dans la feuille active, je ne pense pas reussir à changer cela tout seul donc si quelqu'un a une idée je suis preneur
merci d'avance !
Edit :
Finalement j'ai trouvé une solution à mon deuxieme probleme en déplacant le bouton executant la macro sur une autre feuille et en masquant la colonne A. je ne sais pas pourquoi je n'y ai pas pensé plus tôt :/
merci !
Bonjour à tous,
Je me permets de faire remonter ce sujet un peu ancien parce qu'après des heures et des heures de recherches je ne parviens toujours pas à trouver la solution à mon problème, alors qu'il n'est peut être pas bien compliqué...
Je m'explique : je cherche à faire une consolidation de classeurs excel. Je suis donc repartie du fichier d'exemple Excel fourni dans ce sujet, ce qui m'a déjà bien avancée. Mais voilà, dans mes fichiers sources, que je cherche à consolider, les onglets à rapatrier sont tous alimentés par des formules, et même si mes cellules sont égales à "", elles ne sont pas considérées comme étant "vides" dans la macro Consolidation annuelle de votre exemple. Du coup j'ai plein de lignes vides correspondant aux lignes sur lesquelles j'ai des formules dans mon fichier de consolidation...
Pourriez-vous m'aider à modifier un peu le code pour qu'il considère bien les cellules égales à "" comme étant vides, et pour qu'il me rapatrie des valeurs dans mon fichier final, sans récupérer les formules?
Un grand merci par avance pour votre aide.
Bien cordialement,
Lucie
Bonjour,
J'ai finalement ouvert un nouveau topic en joignant mes fichiers, désolée pour le dérangement et d'avoir faire remonter ce sujet inutilement, c'est le désespoir m'a fait agir trop vite cette nuit!
Bonne journée,
Lucie