Copie de fichiers et changement d'une partie du nom
Bonjour,
Pour commencer je voudrais féliciter tous les participants et les modérateurs de ce forum. Une vrai mine d'information qui m'en a appris énormément.
J'ai une question à laquelle je n'ai trouvé que des brides d'informations, mais mon niveau ne me permet pas de combler les lacunes.
Situation initiale : J'ai un dossier de base dans lequel se trouve une vingtaine de dossiers. Exemple User>Fiches entretien>2020. Dans chaque dossier se trouve une trentaine de fichiers qui sont des feuilles d'entretien. Le nom de chaque fichier comporte l'année en cours suivi de l'adresse du lieu d'entretien et du numéro de contrat. Exemple : 2020_Lausanne, Route de la Paix 10, 2.2005
Situation espérée : 1) Dupliquer le tout (sous-dossiers et fichiers) dans un nouvel emplacement. Exemple User>Fiches entretien>2021. 2) Renommer tous les fichier en changeant la partie "année" par une autre. Exemple : 2021_Lausanne, Route de la Paix 10, 2.2005. L'arborescence des fichiers devrait resté la même.
Réflexions : Dans l'idéal le tout devrait se faire en un code. Je me questionne s'il est mieux de faire le changement de nom à travers une recherche de l'année à remplacer ou alors remplacer les 4 premiers caractères. En effet, vu que dans le nom du fichier il pourrait y avoir deux fois l'année qui apparaît (hasard dans la le numéro de contrat), un changement de nom par recherche pourrait créer des erreurs.
D'avance je vous remercie pour votre aide précieuse. Si j'ai raté un topic du forum qui traitait déjà du sujet, j'en suis confus et vous prie de m'en excuser.
Bien à vous
Axel
Salut,
J'ai placé le fichier ci-joint dans un dossier dans lequel se trouve un sous-dossier nommé ''2020''. Ce sous-dossier contient 3 sous-sous-dossiers nommés un peu n'importe comment et chacun de ces sous-sous-dossiers contient un certain nombre de fichiers commençant par 2020, tel qu'indiqué de ta part.
Puis j'ai lancé la macro en place dans le fichier joint et la macro a créé un nouveau sous-dossier "2021" avec des copies de tous les sous-sous-dossiers et de tous les fichiers et les renommant avec 2021 devant.
Pour 6 fichiers répartis dans 3 sous-sous-dossiers, ça a duré 20 secondes environ.
Comme la nouvelle date est prise du chiffre inscrit en B1 - de même que le sous-dossier à traiter - il est important que le sous-dossier soit nommé par un tel chiffre.
Si tu as créé un sous-dossier 2021 par un premier essai, tu peux corriger la date en B1 et faire un nouvel essai pour 2022.
Fait éventuellement tes premiers essais avec peu de fichiers et de sous-sous-dossiers.
S'il n'est pas possible de nommer les sous-dossiers 2020, 2021, etc., il faudra voir comment on peut corriger le code.
Amicalement.
Cher Yvouille,
Un énorme merci pour ton fichier, cela marche du tonner. Simplement parfait et exactement ce que je cherchais à faire. C'est tout simplement sublime.
Juste un petit détail. J'ai mis 6 fichiers dans un sous fichier et 5 dans l'autre. Dans le dossier de destination, je me retrouve avec 5 et 4 fichiers… Quelles sont les causes possible pour cette perte de donnée ? J'ai fais dans la foulée une nouvelle exportation en faisant déplacer et renommer les données fraichement créées. Aucune perte de données. Je vais regarder du coté des fichiers non transféré à proprement parlé. Peut-être un caractère dans le titre ou autre qui pose problème...
Aussi, par curiosité : est-ce que je suis obligé d'avoir le fichier d'exécution dans le même dossier que celui ou se trouve mon dossier 2020 ?
Merci pour le temps que tu m'as consacré. Tu m'as fourni une solution répondant à mes besoins et élégante qui va vraiment me servir !
Cordialement
Axel
Tant mieux si on avance dans le bon sens.
Juste un petit détail. J'ai mis 6 fichiers dans un sous fichier et 5 dans l'autre. Dans le dossier de destination, je me retrouve avec 5 et 4 fichiers… Quelles sont les causes possible pour cette perte de donnée ? J'ai fais dans la foulée une nouvelle exportation en faisant déplacer et renommer les données fraichement créées. Aucune perte de données.
Euh, je n'ai pas très bien compris ! Fais attention de te mettre à la place de celui qui te lira et qui n'a aucune idée de ton business
Veux-tu dire par là qu'une première fois ça n'a pas fonctionné et une seconde fois oui ?? Sinon, si ça n'a jamais fonctionné, il faut effectivement contrôler qu'il n'y ait pas de problème au niveau des noms des fichiers (il faut absolument la bonne année en premier, sans espace devant !). Et du point de vue des extensions, quelles sont celles qui passent et celles qui créent problème ??? Ou est-ce très aléatoire ?
Aussi, par curiosité : est-ce que je suis obligé d'avoir le fichier d'exécution dans le même dossier que celui ou se trouve mon dossier 2020 ?
Non, absolument pas, mais ça simplifie terriblement les choses. Comme la macro va lire dans quel dossier se trouve ce fichier ''Base'' dans ton arborescence, je peux travailler avec ce début de chemin pour la suite. Et que tu déplaces ce fichier sur un ordinateur ou un autre, ça fonctionne indifféremment. Au contraire, si tu veux placer ce fichier ''Base'' à un endroit quelconque, tu dois indiquer le chemin de tes dossiers, sous-dossiers et sous-sous-dossiers pour chaque machine sur lesquelles est utilisé ce code.
Chaleureusement.
Merci de ton retour et pardonne mon manque de clarté. Je reformule :
J’ai lancé une première fois la macro avec un dossier 2020 contenant 6 fichiers dans un sous dossier A et 5 fichiers dans un sous dossier B. Elle m’a créé un dossier 2021 et ajouter 2021 devant mes fichiers. Cependant je me suis trouvé avec 5 fichiers dans le dossier A et 4 fichiers dans le dossier B. J’ai donc perdu un fichier dans chaque dossier. Ensuite j’ai relancé la macro une deuxième fois en ajoutant une année de plus et parant du dossier 2021 créer avec la macro. Cette fois il a créer 2022 en ne perdant aucune donnée (5 dans le dossier A et 4 dans le dossier B). Je me demandais donc les causes possibles pour que la macro ignore certains fichiers. Je vais analysé cela plus en détail prochainement.
Merci de ton temps.
Cordialement
Axel
Avec plaisir. Je suis loin une semaine, je te recontacte volontiers début juillet.
Ce qui est étrange c’est que c’est tous la même extension, du Excel. Après il y a peut être des caractères spéciaux dans les titres qui pose problème, j’ai pas eu le temps de creuser, mais je te redis dès que je retourne au bureau.
Cordialement
Axel
En réalité, ma macro crée dans un premier temps une copie du sous-dossier concerné avec tous ses sous-sous-dossiers et tous ces fichiers (par exemple le sous-dossier 2020 est copié et une copie 2021 est créé) puis cette macro passe en revue les copies de tous les sous-sous-dossiers, ouvre tous les copies de fichiers, les enregistre sous un autre nom avec la nouvelle date, referme le nouveau fichier et supprime la copie du fichier de base avec l'ancienne date.
Je présume - mais très fortement - que lorsque tu lances la macro, que certaines copies de fichiers ne peuvent pas être ouvertes ou ne pas être enregistrées sous un autre nom, mais qu'elles sont supprimées quand même. Il est alors normal que si tu fais un deuxième essai qu'avec des fichiers ne créant pas de problème, ils soient tous dupliqués.
Je suis fatigué, je ne me relis pas une cinquième fois, j'espère que ce soit plus ou moins clair
Salut,
En privé tu m’indiques que tu as des problèmes avec mon fichier.
Comme ce projet est assez lointain, j’ai dû m’y replonger afin de me rappeler de quoi il s’agissait. Si possible, effectue les tests nécessaires rapidement afin que le membre qui t’aide bénévolement se souvienne ce qu’il a réalisé gratuitement pour toi.
J’ai entre autres constaté que mon fichier fonctionne normalement TRES BIEN avec n’importe quelle extension Excel (.xls, .xlsx, .xlsm) mais que ça peut bloquer si tu utilises des extensions du genre ,docx, .pdt, etc.
Est-ce que tu as d’autres fichiers à traiter que des fichiers Excel ? Si oui, serait-il possible de les enlever des dossiers à traiter sans complication ou faut-il trouver une autre solution ?
Un autre problème pourrait être le ‘’chemin’’ que tu indiques dans la macro en remplacement du chemin indiqué dans la ligne ci-dessous que je dois utiliser sur ma machine :
objFSO.CopyFolder "C:\Users\Yves\Documents\FORUM - Axel\" & Range("B1"), "C:\Users\Yves\Documents\FORUM - Axel\" & Range("B1") + 1, True
Mais comme tu m’avais dit il y a quelques mois que tu avais réussi à utiliser mon fichier chez toi, j’en déduis que tu devrais savoir modifier cette ligne en fonction de ton arborescence !
Je te réexplique la chose à tout hasard : selon l’image ci-dessous, j’ai placé mon fichier Excel ‘’Base’’ et mon dossier ‘’2020’’ dans le dossier ‘’FORUM – Axel’’. Dans la ligne de code ci-dessus, je dois donc écrire exactement ce qui est surligné en bleu dans l’image, SANS OUBLIER D’AJOUTER le signe \
A ces conditions, ça fonctionne parfaitement chez moi.
Est-ce que le nom de tous les fichiers qui doivent être traités – ou qui sont dans le même dossier ou les sous-dossiers de ce dossier - commencent bien par ‘’2020’’ ? Sinon ça pourrait aussi causer des problèmes ?
Au bout d’un moment, faut-il envisager une séance par TeamViewer ????
A te relire.
Bonjour à tous,
Pour commencer je tiens à présenter mes excuses les plus sincères à Yves. Écrire un message en privé n'a pas été très judicieux de ma part, d'autant que cela sort de la philosophie du forum.
Aussi, je tiens à le remercier pour le temps qu'il m'a consacré. Mon attitude n'a pas été très respectueuse. Remercier six mois plus tard alors que je suis dans le besoin est un manque de savoir-vivre évident de ma part et j'en suis désolé.
Pour le lecteur, le message privé que je lui ai envoyé concernait un problème rencontré avec mon fichier :
1) En faisant fonctionner la macro, le contenu de mon dossier principal est dupliqué dans un dossier renommé (année+1). Tous les fichiers contenus dans les sous-dossiers y sont présents (2020_nom du fichier).
2) Tous les fichiers sont renommés (2021_nom du fichier).
3) Dans un troisième temps, les fichiers tout juste renommés sont effacés par la macro.
-> Résultat : Je me retrouve avec un nouveau dossier mère (intitulé "année+1") contenant tous les sous-dossiers, mais aucun fichier à l’intérieure.
Pistes réfutées :
Types de fichiers
- Je travaille uniquement avec des fichiers .xls et xlsx.
Chemin d'accès
- Le chemin semble bon vu que la macro réalise une partie des actions voulues.
Intrigué par le fait que la macro fonctionne chez Yvouille et qu'elle fonctionne par intermittence chez moi, j'ai poussé les analyses.
Conclusion :
- La macro fonctionne parfaitement en présence de peu de sous-dossiers contenant peu de fichiers.
- La macro fonctionne parfaitement en présence d'une grande quantité de sous-dossiers contenant peu de fichiers.
- La macro à un comportement aléatoire (perte de toute ou une partie des fichiers) dans les situations suivantes :
1) Dossier principal contenant 1 sous-dossier dès que le nombre de fichiers internes est supérieur à 22.
2) Dossier principal contenant plusieurs sous-dossiers, dès qu'un des sous-dossiers contient plus de 22 fichiers.
Hypothèse
Manque de puissance de mon interface.
Je vais tester la macro dans un environnement plus puissant, ces prochains jours, au cas ou la perte de donnée serait liée à la puissance de calcul. Je ne manquerais pas de revenir ici pour vous faire part de mes conclusions.
Encore un grand merci pour l'attention qui a été portée à ma problématique.
En vous souhaitant à tous une merveilleuse année 2021.
Cordialement
AxelR
Merci pour tes précisions. Reviens si nécessaire. Juste une précision à mon tour : Yves est le prénom de mon épouse, mais j'utilise parfois sa machine, raison pour laquelle son prénom apparait dans le "chemin" de l'ordi utilisé. Mon vrai nom est réellement Yvouille