Dupliquer un classeur

Bonjour et Bonne Année 2019 au forum

Je débute en VBA donc une grosse cacahuète à ce jour, je vous explique.

Pour le travail et afin de faciliter sa gestion, j'ai besoin d'une macro qui pourrait générer une copie d'un unique fichier du lundi au vendredi et qu'il soit renommé en Tintin.yyyy-mm-dd.xlsx pour chaque jours de la semaine.

Malgré mes tentatives et recherches sur le forum, je ne parviens pas à effectuer une boucle je vois pas trop comment y parvenir ..

Voici mon humble début :

Sub G1()

'copier un fichier (une copie avec le nom différent, dans le même dossier)

Dim FichierOriginal As String

Dim FichierCopie As String

Application.DisplayAlerts = False

Mondossier = "C:\vb\"

FichierOriginal = Mondossier & "Flux.xlsx"

FichierCopie = Mondossier & "Flux1.xlsx"

FileCopy FichierOriginal, FichierCopie

'renommer un fichier

Dim AncienNom As String

Dim NouveauNom As String

Mondossier = "C:\vb\"

AncienNom = Mondossier & "Flux1.xlsx"

NouveauNom = Mondossier & "Flux." & Format(WorksheetFunction.WorkDay(Now, 1), "yyyy-mm-dd") & ".xlsx"

Name AncienNom As NouveauNom

End Sub

si une âme charitable veut bien m'aider

Hello,

Si j'ai bien compris ton problème, une solution simple mais efficace :

Sub Test()

ThisWorkbook.SaveAs ("C:\vb\Flux." & Format(WorksheetFunction.WorkDay(Now, 1), "yyyy-mm-dd") & ".xlsx")

End Sub

Comment faire compliqué quand on peu faire simple

Bonne journée !

Salut Ergotamine,

Merci de ton aide. J'ai une erreur d'exécution '1004' - Erreur définie par l'application ou par l'objet"

Je vois que tu cibles le workbook ce qui diffère de ma méthode, j'apprends

Je ne peux donc pas tester ta ligne mais je suppose qu'elle effectue une copie du workbook pour le renommer en date dans son répertoire d’accueil.

La macro doit me permettre de générer ou d'un bloc les 5 fichiers allant du lundi au samedi de la semaine en cours et renommer ou un par un peut importe la méthode

Bonne après-midi

Autant pour moi, la ligne fonctionne.

Pour générer les autres jours de la semaine serais-tu comment faire s'il te plait ?

Je vois,

Donc tu aimerais que, lorsque tu te connectes une fois par semaine (entre le lundi et le mardi), la macro enregistre une copie du fichier pour tous les jours de la semaine en cours d'un coup ?

J'avais compris au début que tu te connectais tous les jours au fichier et tu lançais la macro, si ce n'est pas ça autant pour moi

En fait la macro elle doit pouvoir copier/coller le même fichier 6 fois de suite et les fichiers seront nommés dans cet exemple :

nom du fichier du lundi généré sera Flux.2018.02.07.xlsx

nom du fichier de mardi généré sera Flux.2018.02.08.xlsx

et ce jusqu'au samedi, soit 6 fichiers distincts au total

Oui la macro enregistre une copie du fichier pour tous les jours de la semaine en cours d'un coup

Ok je regarde ça demain il se fait tard

Ca marche ^^

Hello,

Et voilà ton fichier. Il te génère le nombre de fichiers nécessaires jusqu'à la fin de la semaine (au cas où tu n'actives pas ta macro un lundi).

C'est ma première "programmation" de A à Z en VBA alors n'hésites pas à me faire un retour

Bon dimanche !

65classeur1.xlsm (14.47 Ko)

Salut

Je test de suite!

Je sais pas pourquoi mais quand j'exécute la macro rien ne se passe

même en retirant les displayAlerts j'ai pas de message d'alerte

je poursuis l'investigation

N'est ce pas c'est tout simplement parce-que la semaine se termine et que les dates (fichiers) à générer sont à venir ?

Oui c'est tout à fait ça !

J'ai désactivé les messages d'erreurs dans la macro.

Ce que tu peux tester c'est changer ta date windows (au niveau de l'heure) et mettre à demain ou mardi par exemple

Heu alors changer la date du pc va être compliqué car si je dis pas de bêtises win10 se synchro sur le réseau ?

Ah mince possible je suis sur SEVEN. Du coup tu me diras demain ça te va ?

Oui avec grand plaisirs

Merci pour ta précieuse aide, je tourne en rond depuis 3 semaines sur le sujet ...

Bonne après-midi

Je t'ai fait une V2 en imaginant que le dimanche est le lundi pour que tu vois ce que ça donne

26classeur1.xlsm (14.87 Ko)

Re,

J'ai trouvé une nouvelle fonction qui permet de ne pas fermer le classeur d'origine et de rendre le code moins lourd, je te le met ici, tu l'integreras dans ton fichier ou pas :

Pour un début de semaine au lundi

Sub Test()
Dim i As Integer
Dim DayLeft As Integer
Application.DisplayAlerts = False
DayLeft = 6 - Weekday(Now, vbMonday)
For i = 0 To DayLeft
    ThisWorkbook.SaveCopyAs ("C:\vb\Flux." & Format((Now + i), "yyyy-mm-dd") & ".xls")
Next i
Application.DisplayAlerts = True
End Sub

Pour un début de semaine au dimanche :

Sub Test()
Dim i As Integer
Dim DayLeft As Integer
Application.DisplayAlerts = False
DayLeft = 6 - Weekday(Now, vbSunday)
For i = 0 To DayLeft
    ThisWorkbook.SaveCopyAs ("C:\vb\Flux." & Format((Now + i), "yyyy-mm-dd") & ".xls")
Next i
Application.DisplayAlerts = True
End Sub

Bon dimanche !

Impeccable c'est exactement ce qu'il me fallait, Un Grand merci !!!!

Je vais parfaire mes capacités sur ce sujet et aussi en apprendre encore plus grâce à ton aide )

Je sais pas si à mon niveau je pouvais y parvenir mais maintenant y a plus d'excuses :p

Encore merci pour nos échanges constructifs.

Benito

Rechercher des sujets similaires à "dupliquer classeur"