OVH Cloud OVH Cloud

Copie de sauvegarde à l'ouverture d'un document.

8 réponses
Avatar
Souriane
Comment puis-je faire?

Chaque fois que j'ouvre le fichier c:\tomate\xyz.xls, je voudrais
qu'une copie soit faites dans le r=E9pertoire c:\patate\ et que le
nom du fichier soit date_du_jour_heure_actuelle.xls et qu'en suite je
peux travailler dans le fichier xyz.xls

Merci de toute suggestion !

Souriane

8 réponses

Avatar
Pierre Fauconnier
Bonjour

Dans le module ThisWorkbook de ton fichier, copie ce qui suit:

Private Sub Workbook_Open()
ThisWorkbook.SaveAs "c:patate" & Format(Now(), "yymmdd") & "_" &
Format(Now(), "hhmm")
End Sub

en adaptant le nom du dossier et les formats date et heure choisis.
Attention, il faut que les formats respectent les règles des noms de
fichier...

Ainsi, l'heure ne peut être retournée sour format 08:30 car : est refusé
dans le nom d'un fichier.

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci


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

Comment puis-je faire?

Chaque fois que j'ouvre le fichier c:tomatexyz.xls, je voudrais
qu'une copie soit faites dans le répertoire c:patate et que le
nom du fichier soit date_du_jour_heure_actuelle.xls et qu'en suite je
peux travailler dans le fichier xyz.xls

Merci de toute suggestion !

Souriane
Avatar
RGI
bonjour

ou dans le genre
Dans le module ThisWorkbook de ton fichier, copie ce qui suit:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
oldfichierchem = ThisWorkbook.Path & "" & ThisWorkbook.Name
On Error GoTo 1
dossier = "patate"
MkDir dossier
1:
newchem = ThisWorkbook.Path & "" & dossier
datefichier$ = Format(Date, "dddd d mmm yyyy")
heurefichier$ = Format(Time, "h-m-s")
nomfichier$ = datefichier$ & heurefichier$ & ".xls"
ThisWorkbook.SaveAs newchem & "" & nomfichier$
ThisWorkbook.SaveAs oldfichierchem
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


salutations

Gilbert


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

Comment puis-je faire?

Chaque fois que j'ouvre le fichier c:tomatexyz.xls, je voudrais
qu'une copie soit faites dans le répertoire c:patate et que le
nom du fichier soit date_du_jour_heure_actuelle.xls et qu'en suite je
peux travailler dans le fichier xyz.xls

Merci de toute suggestion !

Souriane
Avatar
Pierre Fauconnier
Tu as raison, RGI...

C'est pourquoi je revenais sur le fil de discussion.

En effet, ma façon de faire amène à travailler sur la copie de sécurité. Il
faut donc enregistrer le nom complet du fichier avant le saveas

Je propose dès lors une méthode plus courte, utilisable lorsque la référence
"Microsoft scripting runtime" est cochée dans Outils/Références de VBE

Private Sub Workbook_Open()
Dim fs As New FileSystemObject
Dim Dossier As Folder
Dim Fichier As File

fs.GetFolder(ThisWorkbook.Path).Files(ThisWorkbook.Name).Copy _
"c:patate" & Format(Now(), "yymmdd") & "_" & Format(Now(), "hhmm")
& ".xls"
End Sub

Avec l'objet fs, on peut, pour sécuriser la macro, vérifier que le dossier
c:patate existe et agir en conséquence.

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"RGI" a écrit dans le message de news:
43d8e0e6$0$6661$
bonjour

ou dans le genre
Dans le module ThisWorkbook de ton fichier, copie ce qui suit:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
oldfichierchem = ThisWorkbook.Path & "" & ThisWorkbook.Name
On Error GoTo 1
dossier = "patate"
MkDir dossier
1:
newchem = ThisWorkbook.Path & "" & dossier
datefichier$ = Format(Date, "dddd d mmm yyyy")
heurefichier$ = Format(Time, "h-m-s")
nomfichier$ = datefichier$ & heurefichier$ & ".xls"
ThisWorkbook.SaveAs newchem & "" & nomfichier$
ThisWorkbook.SaveAs oldfichierchem
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


salutations

Gilbert


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

Comment puis-je faire?

Chaque fois que j'ouvre le fichier c:tomatexyz.xls, je voudrais
qu'une copie soit faites dans le répertoire c:patate et que le
nom du fichier soit date_du_jour_heure_actuelle.xls et qu'en suite je
peux travailler dans le fichier xyz.xls

Merci de toute suggestion !

Souriane




Avatar
Souriane
Merci mais c'est incomplet.
Je veux que la copie se ferme et que je puisse travailler dans
l'orginal.


Dans le module ThisWorkbook de ton fichier, copie ce qui suit:

Private Sub Workbook_Open()
ThisWorkbook.SaveAs "c:patate" & Format(Now(), "yymmdd") & "_" &
Format(Now(), "hhmm")
End Sub


Avatar
JpPradier
Bonjour Souriane

Tu peux aussi utiliser :

NomClasseur = "c:patate" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs NomClasseur

j-p
Avatar
RGI
il est également possible de vérifier si ce dossier existe

et de le créer avec mkdir s'il n'existe pas

salutations

RGI

"Pierre Fauconnier" a écrit dans le
message de news:
Tu as raison, RGI...

C'est pourquoi je revenais sur le fil de discussion.

En effet, ma façon de faire amène à travailler sur la copie de sécurité.
Il faut donc enregistrer le nom complet du fichier avant le saveas

Je propose dès lors une méthode plus courte, utilisable lorsque la
référence "Microsoft scripting runtime" est cochée dans Outils/Références
de VBE

Private Sub Workbook_Open()
Dim fs As New FileSystemObject
Dim Dossier As Folder
Dim Fichier As File

fs.GetFolder(ThisWorkbook.Path).Files(ThisWorkbook.Name).Copy _
"c:patate" & Format(Now(), "yymmdd") & "_" & Format(Now(),
"hhmm") & ".xls"
End Sub

Avec l'objet fs, on peut, pour sécuriser la macro, vérifier que le dossier
c:patate existe et agir en conséquence.

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci



"RGI" a écrit dans le message de news:
43d8e0e6$0$6661$
bonjour

ou dans le genre
Dans le module ThisWorkbook de ton fichier, copie ce qui suit:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
oldfichierchem = ThisWorkbook.Path & "" & ThisWorkbook.Name
On Error GoTo 1
dossier = "patate"
MkDir dossier
1:
newchem = ThisWorkbook.Path & "" & dossier
datefichier$ = Format(Date, "dddd d mmm yyyy")
heurefichier$ = Format(Time, "h-m-s")
nomfichier$ = datefichier$ & heurefichier$ & ".xls"
ThisWorkbook.SaveAs newchem & "" & nomfichier$
ThisWorkbook.SaveAs oldfichierchem
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


salutations

Gilbert


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

Comment puis-je faire?

Chaque fois que j'ouvre le fichier c:tomatexyz.xls, je voudrais
qu'une copie soit faites dans le répertoire c:patate et que le
nom du fichier soit date_du_jour_heure_actuelle.xls et qu'en suite je
peux travailler dans le fichier xyz.xls

Merci de toute suggestion !

Souriane








Avatar
Pierre Fauconnier
Encore plus simple... Bravo et merci

Pierre

"JpPradier" a écrit dans le message
de news:
Bonjour Souriane

Tu peux aussi utiliser :

NomClasseur = "c:patate" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs NomClasseur

j-p


Avatar
RGI
ah oui


Bonjour Souriane

Tu peux aussi utiliser :

NomClasseur = "c:patate" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs NomClasseur

j-p