Archiver tous les fichiers différents d'un fichier précis - VB/VBA/VBS - Programmation
Marsh Posté le 29-05-2013 à 15:30:19
Bonjour,
tout est quasiment possible quand tout est clair !
Par exemple, archiver consiste en quoi précisément ?
On aurait bien aimer voir la macro archivant le mois précédent …
(en utilisant l'icône prévue à cet effet, sinon, comme d'autres, je zappe ‼)
Sans boule de cristal, je peux juste conseiller de consulter l'aide de la fonction Dir
répondant bien au besoin de lister les fichiers d'un répertoire;
reste ensuite à les comparer avec le nom du fichier du mois en cours afin de les archiver …
Marsh Posté le 30-05-2013 à 13:30:31
Bonjour,
Merci d'avoir prit le temps dé répondre.
Quand je parle d'archiver, c'est le fait que tous le mois mes fichiers sont enregistrés dans un dossier "FILE NAME". J'ai un sous dossier "archive", et j'aimerais qu'il n'y ait que la dernière version qui reste dans ce dossier.
Voici mon code actuel qui archive le fichier du mois précédent (et qui ne fonctionne pas en janvier, pour le fichier de décembre) :
Code :
|
Marsh Posté le 30-05-2013 à 17:10:59
Ton code m'a l'air pas mal, pas de message d'erreur ?
Si la problématique n'a pas changée, ma réponse précédente reste valable :
parcours des fichiers un à un (Dir) puis comparaison avec le fichier du mois en cours pour l'archivage.
Marsh Posté le 31-05-2013 à 09:47:39
Oui mon code fonctionne, pas de message d'erreur mais il ne traite que le mois précédent.
Avec la fonction DIR, je n'arrive pas à faire le copier coller des path vu qu'un fichier ce trouve sur un serveur, et que le chemin cible est sur un autre.
Mon code que j'ai essayé d'écrire est le suivant :
Code :
|
Mais ça ne fonctionne pas vu que Path est tout un chemin et non pas mon fichier que je veux déplacer
Marsh Posté le 31-05-2013 à 11:11:40
Path étant une propriété existante déjà dans le VBA, mieux vaut donc ne pas l'utiliser comme nom de variable …
Mais le souci ne vient pas de là mais de la mauvaise utilisation de la fonction Dir dans sa valeur et dans la boucle !
Dir renvoie uniquement un nom de fichier sans répertoire …
Dans ta ligne n°9, le ? est plus approprié que le signe *
car le caractère ? représente un seul caractère tandis que le caractère * peut en représenter plusieurs …
A comparer avec la ligne n°11 du code ci-dessous (si le répertoire source contient uniquement des fichiers comme la variable Fich) …
Le test de ta ligne n°12 n'est pas bon car dès que le fichier de la variable Fich est rencontré la boucle s'arrête
même s'il reste d'autres fichiers à traiter ! Pourtant avec l'exemple de l'aide de Dir …
Et du reste seul le premier fichier rencontré est traité car il manque une ligne ‼ (voir ma ligne n°19)
Comme il s'agit de déplacer un fichier, il manque aussi la suppression du fichier source après la copie, voir ma ligne n°16 …
Code à tester :
Code :
|
Marsh Posté le 03-06-2013 à 11:23:57
Merci beaucoup Marc!
Le code a fonctionné, je l'ai donc étendu à tous mes fichiers et ça fonctionne.
J'ai archivé les anciens fichiers .xls à la main, et tous les .xlsx se sont archivés.
Encore merci pour ton aide et surtout pour tes explications!
Marsh Posté le 29-05-2013 à 10:55:09
Bonjour à tous,
J'aimerais créer une macro qui m'archiverait tous les fichiers différents de celui du mois.
Actuellement, ma macro archive les fichiers du mois précédents à l'aide de variable.
Le soucis est que parfois je n'ai pas de fichier du mois précédent, mais de deux mois en arrière par exemple, ou bien des fichiers de décembre - et lorsque l'on sera en janvier, ça bloquera.
Ce que j'aimerais donc faire, c'est d'archiver tout ce qui n'est pas du mois.
Mes fichiers sont de la forme : NomFic = "FILE NAME" & Format(DateDeb, "MM-YY" ) & " to " & Format(DateFin, "MM-YY" ) & ".xlsx"
Sachant que mes variables étaient :
DateDeb = DateSerial(Year(Date) - 1, Month(Date) - 1, 1)
DateFin = DateSerial(Year(Date), Month(Date) - 2, 1)
J'aimerais que mes nouvelles varialbes soient :
DateDeb = DateSerial(Year(Date) -1, Month(Date), 1)
DateFin = DateSerial(Year(Date), Month(Date) - 1, 1)
Et que les fichiers différents de NomFic soient archivés dans un Path donné.
J'ai essayé de créer une variable NomFic2 pour ensuite mettre mon chemin & NomFic2 mais ca ne fonctionne pas.
Je ne peux pas créer de variable Dim NomFic2 <> NomFic, donc j'ai testé un NomFic2 = "FILE NAME" & * & "xlsx", en pendant que l'étoile serait reconnu, mais non.
J'espère avoir été plutôt claire... Je ne sais même pas si c'est possible
Si vous avez une idée ... Merci d'avance