Copier plusieurs classeurs dans une feuille
Bonjour à tous,
je reçois un fichier avec plusieurs classeurs et je voudrais récupérer les données (sans faire copier/coller) sur une seule feuille dans un autre classeur (total).
Ensuite je voudrais faire 2 tris, 1er tri colonne B et 2è tri colonne A et faire la somme de la colonne E selon le tri de la colonne B.
Si vous pouvez m'aider à faire 2 macros pour faire tout ça, merci
Salut,
J’ai compris que tu reçois tous les mois un certain nombre de fichiers (ou classeurs, c’est synonyme) correspondant aux jours d’un mois. J’en déduis que tu peux placer ces fichiers ou bon te semble dans ton arborescence, je veux dire que je présume que tu peux les placer – afin d’être traités – dans un dossier quelconque.
Je te propose alors de placer dans un dossier que l’on nommerait par exemple « Traitement mensuel » un fichier que l’on appellerait « Base » et qui contiendrait toutes la macro nécessaire aux traitements mensuels.
Chaque mois tu placerais tes fichiers journaliers dans ce dossier, tu ouvrirais le fichier « Base », tu lancerais la macro et le tour serait joué. Est-ce que ceci te convient ?
Maintenant c’est à toi de décider ce que doit faire cette macro, en plus ou en parallèle à tes premiers souhaits déjà exprimés : veux-tu archiver chaque mois tous les fichiers journaliers ainsi qu’un fichier « Total du mois mm.aaaa » ? Veux-tu simplement prendre connaissance des résultats puis supprimer tous les fichiers ? Veux-tu n’archiver que le fichier « Total du mois mm.aaaa » ? Etc., etc. ?
Afin de ne pas s’embrouiller, commençons par le début et ne répond qu’à mes questions ci-dessus ! En ce qui concerne les tris et les totaux à effectuer lorsque les données seront reportées dans le fichier « Total du mois », on a le temps de voir par la suite.
Cordialement.
Salut Yvouille,
L'idée du dossier "traitement mensuel" me convient tout à fait, c'est un peu l'idéal que j'avais. Un dossier "traitement mensuel" avec un fichier "bases" et les fichiers d'archivages.
Pour l'archivage, j'ai besoin que du fichier "total du mois mm.aaaa".
Merci de ton aide.
cordialement
Salut,
Voici un premier jet.
Tu places le fichier ci-joint dans un dossier que je te conseille de nommer «Traitement mensuel», mais ce nom n’a pas trop d’importance.
Il faudrait qu’il n’y ait absolument pas d’autres fichiers Excel dans ce dossier, par contre il peut y avoir autant de sous-dossier que tu désires.
Il faut que tu places provisoirement un sous-dossier nommé exactement «Archives 2013» dans le dossier «Traitement mensuel».
Ensuite, en simulation du travail que tu ferais chaque mois, tu places des copies des fichiers Excel correspondant à tous les jours d’un mois dans le dossier «Traitement mensuel» (tous ces fichiers peuvent ou doivent rester fermer), tu ouvres le fichier «Base» et tu lances la macro à l’aide du bouton mis en place. La macro dure plus ou moins 10 secondes pour environ 30 fichiers à traiter.
Cette macro exécute notamment les étapes suivantes : elle reporte toutes les données des fichiers journaliers dans le fichier «Base», elle supprimer définitivement tous les fichiers provisoires correspondant à tous les jours du mois, elle trie les données selon les groupes de plats (colonne B) et la date (colonne A), elle répertorie tous les groupes de plats dans la colonne G, elle effectue le total de chaque groupe dans la colonne H, elle place un titre dans ces colonnes (le nom du mois et de l’année en G1), elle enregistre une copie de ce fichier «Base» dans le sous-dossier «Archives 2013», elle lui attribue un nouveau nom composé de l’année, du mois et d’un texte quelconque (pour l’instant ça donne un nom du genre «2013_7_xxxx» ; ce fichier reste ouvert en finale) et elle referme le fichier «Base» sans modification, prêt pour un prochain usage, le mois prochain.
Si ceci te convient déjà, on peut envisager les améliorations suivantes :
1) Les sous-dossiers «Archives 2014», «Archives 2015», etc. pourraient être créés automatiquement lorsqu’ils seront nécessaires (la macro contrôlerait par exemple en 2014 si le dossier «Archives 2014» existe et le créerait si nécessaire).
2) Le titre placé dans la cellule G1 du nouveau fichier créé pourrait être en majuscule (Juillet 2013 à lieu de juillet 2013).
3) ???????
Si tu préfères archiver tous les nouveaux fichiers dans un seul sous-dossier « Archives », fais-le-moi savoir.
A te relire.
Salut
Merci beaucoup pour ce premier jet, déjà bien abouti
Je regarde tout ça demain au boulot et je te redirais les petites retouches qu'on pourrait y apporter.
Bonne soirée
Salut Yvouille
Cette macro me convient tout à fait, tu me proposais qu'elle puisse créer automatiquement les années suivantes, je suis preneur.
Du coup en janvier 2014, il me suffirait de créer le dossier "Archives 2014" et la macro placerait le fichier directement dans le dossier, c'est bien ça?
D'un côté plus perso, est-ce que tu pourrais mettre des commentaires dans la macro pour je puisse voir et comprendre les codes qui t'ont servis à la faire?
Merci de ton aide.
Re,
Non, pas du toutjp972 a écrit :Du coup en janvier 2014, il me suffirait de créer le dossier "Archives 2014" et la macro placerait le fichier directement dans le dossier, c'est bien ça?
Yvouille a écrit :1) Les sous-dossiers «Archives 2014», «Archives 2015», etc. pourraient être créés automatiquement lorsqu’ils seront nécessaires (la macro contrôlerait par exemple en 2014 si le dossier «Archives 2014» existe et le créerait si nécessaire).
Le nouveau fichier joint réalise exactement cela. Si tu modifies par exemple l’un de tes fichiers journaliers et que tu y indiques des dates en 2014, un sous-dossier «Archives 2014» sera automatiquement créé.
J’ai parfois commenté mes macros à l’attention des utilisateurs, mais celle-ci semble particulièrement ardue. J’ai aussi l’impression que je vais passer un temps absolument fou à la commenter mais que ça ne te servira pas vraiment à grand-chose. J’espère alors que tu comprennes que je ne vais pas réaliser ton souhait. Par contre, si tu veux des explications sur une ou l’autre ligne précise du code, c’est très volontiers.
D'autres améliorations sont encore possibles.
Cordialement.
Salut Yvouille,
Pour les commentaires, je comprends tout à fait
Pour les améliorations, est-ce possible que le dossier "Archives 2013" ne comporte qu'un fichier et que le report "2013_7_xxxx" se fasse sur des feuilles différentes?
L'idée serait d'avoir dans le dossier "Archives 2013" un seul fichier avec 13 feuilles, 12 pour les mois et 1 pour le total annuel.
Merci pour toute l'aide que tu m'apportes.
Cordialement.
Re,
Vu tes nouvelles demandes, il me semble que ce serait alors plus simple d’avoir un seul sous-dossier «Archives» dans le dossier de base (sans plus de mention de l’année) et que dans ce sous-dossier «Archives» se trouve un fichier «Modèle» ainsi que des fichiers annuels nommés par exemple «2013 – Reports».
Le fichier «Modèle» comporterait déjà une feuille de base pour la récapitulation annuel que l’on pourrait nommer «Récapitulatif annuel».
Ainsi, lors du lancement de la macro du fichier «Base», elle irait contrôler si le fichier annuel «xxxx – Reports» existe dans le sous-dossier «Archives», le créerait sur la base du fichier «Modèle» s’il n’existe pas et y ajouterait les feuilles des différents mois au fur et à mesure de l’avancement de tes travaux.
Une autre macro – placée dans le fichier «Modèle» - réactualiserait la feuille «Récapitulatif annuel» des fichiers «xxxx – Reports» créés sur sa base.
Est-ce que ça te semble une bonne solution ?
A te relire.
Bonjour Yvouille,
Ce que tu proposes me semble être la bonne solution.
C'est vraiment sympa ton implication.
Bonne soirée.
Salut,
Voici les deux nouveaux fichiers comportant tes derniers souhaits.
Dans le dossier «Traitement mensuel» tu places le nouveau fichier «Base» ci-joint. A nouveau il ne devrait pas y avoir d’autre fichier Excel que celui-là.
Dans ce dossier «Traitement mensuel» tu places également un sous-dossier nommé exactement «Archives» et dans ce sous-dossier dossier «Archives» tu places l’autre fichier Excel «Modèle» également joint.
Tu places alors des copies des fichiers journaliers à côté du fichier «Base», tu ouvres ce dernier et tu lances la macro.
Un nouveau fichier «2013 - Récapitulatif annuel.xlsm» doit alors avoir été créé automatiquement sur la base du fichier «Modèle» et doit comporter une feuille pour le mois nouvellement traité ainsi qu’un récapitulatif actualisé. Si tu simules un nouveau traitement pour un autre mois 2013, celui-ci viendra s’ajouter au fichier «2013 - Récapitulatif annuel.xlsm». Si tu simules un nouveau traitement pour 2014, un nouveau fichier «2014 - Récapitulatif annuel.xlsm» doit alors être présent.
Afin de simuler des récapitulatifs pour d’autres mois et/ou années, tu remplaces simplement les dates de la colonne A de l’un ou plusieurs de tes fichiers journaliers par les dates voulues avant de les placer à côté du fichier « Base » afin de lancer la macro.
Merci de tester tout ça.
Cordialement.
Salut,
Si ça bloque sur la ligne
Workbooks.Open Filename:=Chemin_Bis & "Modèle.xlsm"ça veut normalement dire que le fichier Modèle n’a 1) soit pas été enregistré sous le bon nom, 2) soit il n’a pas été enregistré avec la bonne extension, 3) soit il n’a pas été enregistré dans le bon sous-dossier, 4) soit le sous-dossier n'a pas le bon nom, 5) soit le sous-dossier n'a pas été enregistré au bon endroit.
Sur mon ordi, j’ai enregistré le fichier Base dans un dossier quelconque nommé JP Traiment mensuel (ce nom n’a pas trop d’importance) et dans ce dossier, j’y ai placé en plus un sous-dossier «Archives» ; ce nom de sous-dossier est très important.
Dans ce sous dossier «Archives», il doit y avoir le fichier Modèle au format .xlsm.
Si tout ça a été fait correctement, je ne vois pas ce qui pourrait ne pas jouer. Merci de revoir tout ça.
Comme tu arrêtes le code à ce moment-là, il y a des actions qui ne sont pas exécutées. Lorsque tu me dis que la feuille Report est correcte, je présume qu'il s'agit de la feuille Report du fichier Base et je te réponds alors que je ne pense que non, ce n'est pas bon
Mais bon, cette partie du problème n’en est pas vraiment une puisque j’avais de toute façon placé un code en début de macro afin de vider cette feuille Report par sécurité.
Concentrons-nous donc sur la configuration de ton arborescence et la création correcte des fichiers nécessaires.
A te relire.
Désolé
C'est de ma faute, j'ai laissé "copie de modèle" quand j'ai enregistré tes fichiers.
Elle marche parfaitement bien tes macros.
Encore merci pour ton aide.
