OVH Cloud OVH Cloud

Archiver les fichiers en fonction du Mois?

7 réponses
Avatar
fred
Bonjour,
J'ai des fichiers qui sont nommés en fonction de la date (mmmm-yy).
J'aimerais les archiver dans un répertoire du Mois lorsque le dernier
fichier du 30 ou 31 existe. le problème c'est que certains mois comportent
31 jours et d'autres 30 bien sûr! (les fichiers de Septembre les déplacer
vers le dossier Septembre par exemple).
Comment mettre dans une macro la condition du mois à 30 jours et du mois à
31 jours avec une boucle?
Merci de votre aide

7 réponses

Avatar
JLuc
*Bonjour fred*,
J'ai pas tout tout compris, mais je pense qu'avec çà, tu devrais
pouvoir t'en sortir :

Sub archive_suivant_mois()
mois_precedent = Month(Date) - 1
nombre_de_jours = Day(DateSerial(Year(Date), mois_precedent + 1, 0))
For jour = 1 To nombre_de_jours
MsgBox "jour " & jour
Next
End Sub

Dis nous si çà te convient

Bonjour,
J'ai des fichiers qui sont nommés en fonction de la date (mmmm-yy).
J'aimerais les archiver dans un répertoire du Mois lorsque le dernier fichier
du 30 ou 31 existe. le problème c'est que certains mois comportent 31 jours
et d'autres 30 bien sûr! (les fichiers de Septembre les déplacer vers le
dossier Septembre par exemple).
Comment mettre dans une macro la condition du mois à 30 jours et du mois à 31
jours avec une boucle?
Merci de votre aide


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
fred
D'abord Merci JLuc. Je vais essayer d'être plus précis.
En fait j'ai sur ma feuille Excel (par une boucle qui liste les fichiers
d'un répertoire avec Dir) en colonne A les différents noms des fichiers
nommés
Fichier02_10_2006
Fichier01_10_2006
Fichier03_10_2006 etc...
J'aimerais par un test...si Fichier31_10_2006 existe déplacer ces fichiers
vers c:ArchivesDate, dans ce cas c:ArchivesOctobre
Le problème c'est qu'il y a des mois à 30 jours, d'autres à 31 et Février
suivant année bissextile?
Comment faire???
Merci

"JLuc" a écrit dans le message de news:

*Bonjour fred*,
J'ai pas tout tout compris, mais je pense qu'avec çà, tu devrais pouvoir
t'en sortir :

Sub archive_suivant_mois()
mois_precedent = Month(Date) - 1
nombre_de_jours = Day(DateSerial(Year(Date), mois_precedent + 1, 0))
For jour = 1 To nombre_de_jours
MsgBox "jour " & jour
Next
End Sub

Dis nous si çà te convient

Bonjour,
J'ai des fichiers qui sont nommés en fonction de la date (mmmm-yy).
J'aimerais les archiver dans un répertoire du Mois lorsque le dernier
fichier du 30 ou 31 existe. le problème c'est que certains mois
comportent 31 jours et d'autres 30 bien sûr! (les fichiers de Septembre
les déplacer vers le dossier Septembre par exemple).
Comment mettre dans une macro la condition du mois à 30 jours et du mois
à 31 jours avec une boucle?
Merci de votre aide


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





Avatar
JLuc
*ReBonjour fred*,
Et bien, avec la macro que je t'ai donner, j'en ai trop fait
Essaie ceci et dis nous :

Sub DeplaceFichier()
Dim fs, f, s
Dim mois =
Array("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Decembre")
Set fs = CreateObject("Scripting.FileSystemObject")
Chemin = "C:Archives" & mois(Month(Date))
For x = 1 To Range("A65536").End(xlup).Row
If Mid(Cells(x,1), 11, 2) = Month(Date) Then
Set f = fs.GetFile(ThisWorkbook.Path & "" & Cells(x,1) & ".xls")
f.Move "D:"
End If
Next
Set f = Nothing
End Sub

D'abord Merci JLuc. Je vais essayer d'être plus précis.
En fait j'ai sur ma feuille Excel (par une boucle qui liste les fichiers d'un
répertoire avec Dir) en colonne A les différents noms des fichiers nommés
Fichier02_10_2006
Fichier01_10_2006
Fichier03_10_2006 etc...
J'aimerais par un test...si Fichier31_10_2006 existe déplacer ces fichiers
vers c:ArchivesDate, dans ce cas c:ArchivesOctobre
Le problème c'est qu'il y a des mois à 30 jours, d'autres à 31 et Février
suivant année bissextile?
Comment faire???
Merci

"JLuc" a écrit dans le message de news:

*Bonjour fred*,
J'ai pas tout tout compris, mais je pense qu'avec çà, tu devrais pouvoir
t'en sortir :

Sub archive_suivant_mois()
mois_precedent = Month(Date) - 1
nombre_de_jours = Day(DateSerial(Year(Date), mois_precedent + 1, 0))
For jour = 1 To nombre_de_jours
MsgBox "jour " & jour
Next
End Sub

Dis nous si çà te convient

Bonjour,
J'ai des fichiers qui sont nommés en fonction de la date (mmmm-yy).
J'aimerais les archiver dans un répertoire du Mois lorsque le dernier
fichier du 30 ou 31 existe. le problème c'est que certains mois comportent
31 jours et d'autres 30 bien sûr! (les fichiers de Septembre les déplacer
vers le dossier Septembre par exemple).
Comment mettre dans une macro la condition du mois à 30 jours et du mois à
31 jours avec une boucle?
Merci de votre aide


-- ____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
JLuc
Dèsole, c'est parti avec les valeurs de mes tests
Il faut lire :
f.Move Chemin

Chemin = "C:Archives" & mois(Month(Date))
For x = 1 To Range("A65536").End(xlup).Row
If Mid(Cells(x,1), 11, 2) = Month(Date) Then
Set f = fs.GetFile(ThisWorkbook.Path & "" & Cells(x,1) & ".xls")
f.Move "D:"
End If
Next


--
JLuc

Avatar
fred
JLuc bonjour,
J'ai testé...la boucle
Avant le chemin j'ai créer le répertoire
MkDir "C:ArchivesArchives" & mois(Month(Date))
En Chemin j'ai rajouté l'antislash
Chemin = "C:ArchivesArchives" & mois(Month(Date)) & ""
Par contre je ne comprends pas pourquoi mois(Month(Date) me donne le mois de
novembre et non celui d'Octobre?

Ensuite sur la ligne
If Mid(Cells(x, 1), 12, 2) = Month(Date)...ça ne fonctionne pas...pourtant
le Mid me donne bien le numéro du mois (09, 10, 11, etc...)?
Si par contre je pose
If Mid(Cells(x, 1), 12, 2) = 11...il le prend bien en compte...Y aurait-il
un problème de format (pourtant j'ai testé avec format standard etc...même
problème??

Je vais tester ...mais cette fois ci avec des répertoires

Merci

"JLuc" a écrit dans le message de news:

Dèsole, c'est parti avec les valeurs de mes tests
Il faut lire :
f.Move Chemin

Chemin = "C:Archives" & mois(Month(Date))
For x = 1 To Range("A65536").End(xlup).Row
If Mid(Cells(x,1), 11, 2) = Month(Date) Then
Set f = fs.GetFile(ThisWorkbook.Path & "" & Cells(x,1) & ".xls")
f.Move "D:"
End If
Next


--
JLuc





Avatar
JLuc
fred avait soumis l'idée :
JLuc bonjour,
J'ai testé...la boucle
Avant le chemin j'ai créer le répertoire
MkDir "C:ArchivesArchives" & mois(Month(Date))
En Chemin j'ai rajouté l'antislash
Chemin = "C:ArchivesArchives" & mois(Month(Date)) & ""
Par contre je ne comprends pas pourquoi mois(Month(Date) me donne le mois de
novembre et non celui d'Octobre?
Oui, tu doit être en Option Base 0 (par defaut) donc les indices de

tableau commencent à 0 et pas à 1. Il faut mettre : mois(Month(Date)-1


Ensuite sur la ligne
If Mid(Cells(x, 1), 12, 2) = Month(Date)...ça ne fonctionne pas...pourtant le
Mid me donne bien le numéro du mois (09, 10, 11, etc...)?
Essaie avec :

If Val(Mid(Cells(x, 1), 12, 2)) = Month(Date)...


Si par contre je pose
If Mid(Cells(x, 1), 12, 2) = 11...il le prend bien en compte...Y aurait-il un
problème de format (pourtant j'ai testé avec format standard etc...même
problème??

Je vais tester ...mais cette fois ci avec des répertoires

Merci

"JLuc" a écrit dans le message de news:

Dèsole, c'est parti avec les valeurs de mes tests
Il faut lire :
f.Move Chemin

Chemin = "C:Archives" & mois(Month(Date))
For x = 1 To Range("A65536").End(xlup).Row
If Mid(Cells(x,1), 11, 2) = Month(Date) Then
Set f = fs.GetFile(ThisWorkbook.Path & "" & Cells(x,1) & ".xls")
f.Move "D:"
End If
Next


-- JLuc





--
JLuc



Avatar
fred
Pour Option Base 0 (par defaut) , j'ai rajouter dans le module
Option Explicit
Option Base 1
Et maintenant ça fonctionne sans problème avec
If Val(Mid(Cells(x, 1), 12, 2)) = Month(Date) then...
Je vais tester avec des répertoires maintenant.
Encore merci JLuc pour ton aide précieuse.

"JLuc" a écrit dans le message de news:

fred avait soumis l'idée :
JLuc bonjour,
J'ai testé...la boucle
Avant le chemin j'ai créer le répertoire
MkDir "C:ArchivesArchives" & mois(Month(Date))
En Chemin j'ai rajouté l'antislash
Chemin = "C:ArchivesArchives" & mois(Month(Date)) & ""
Par contre je ne comprends pas pourquoi mois(Month(Date) me donne le mois
de novembre et non celui d'Octobre?
Oui, tu doit être en Option Base 0 (par defaut) donc les indices de

tableau commencent à 0 et pas à 1. Il faut mettre : mois(Month(Date)-1


Ensuite sur la ligne
If Mid(Cells(x, 1), 12, 2) = Month(Date)...ça ne fonctionne
pas...pourtant le Mid me donne bien le numéro du mois (09, 10, 11,
etc...)?
Essaie avec :

If Val(Mid(Cells(x, 1), 12, 2)) = Month(Date)...


Si par contre je pose
If Mid(Cells(x, 1), 12, 2) = 11...il le prend bien en compte...Y
aurait-il un problème de format (pourtant j'ai testé avec format standard
etc...même problème??

Je vais tester ...mais cette fois ci avec des répertoires

Merci

"JLuc" a écrit dans le message de news:

Dèsole, c'est parti avec les valeurs de mes tests
Il faut lire :
f.Move Chemin

Chemin = "C:Archives" & mois(Month(Date))
For x = 1 To Range("A65536").End(xlup).Row
If Mid(Cells(x,1), 11, 2) = Month(Date) Then
Set f = fs.GetFile(ThisWorkbook.Path & "" & Cells(x,1) & ".xls")
f.Move "D:"
End If
Next


-- JLuc





--
JLuc