macro sauvegarde

gui59300

XLDnaute Occasionnel
Bonjour

J'ai lu sur le forum des discutions sur les sauvegarde automatique.
Mais en faite je ne comprends pas du tout le procédé :confused:
Je connais très peu de chose sur le VBA.

Je travail sur un dossier en réseau et j'aimerais que le fichier se sauvegarde tout les lundi par exemple sur mon disque dur par sécurité.

Pour l'instant ma macro j'active grâce à un bouton placé sur la feuille

Voici le code

ActiveWorkbook.SaveAs Filename:= _
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False

Range("B2").Select
Selection.Copy
Range("V2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False

Il sauvegarde dans un fichier puis il sauvegarde la date de sauvegarde en V2.

Comment je peux automatiser ça pour que chaque lundi le fichier se sauvegarde automatiquement.
 

tototiti2008

XLDnaute Barbatruc
Re : macro sauvegarde

Bonjour gui59300,

il faudra tout de même ouvrir le fichier, même si tu évites de cliquer sur un bouton.

Si tu souhaites que ça se réalise même si le fichier n'est pas ouvert, il faut passer par un script couplé à un planificateur (planificateur de tâches Windows par exemple).
 

tototiti2008

XLDnaute Barbatruc
Re : macro sauvegarde

Re,

alors mets ce code (trés légèrement modifié) dans Thisworkbook :
(nom de feuille en rouge à adapter)

Code:
Private Sub Workbook_Open()
 
ActiveWorkbook.SaveAs Filename:= _
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
With thisworkbook.worksheets("[B][COLOR=red]Feuil1[/COLOR][/B]")
.Range("B2").Copy
.Range("V2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
end with
Application.CutCopyMode = False
 
End Sub
 

gui59300

XLDnaute Occasionnel
Re : macro sauvegarde

Re,

alors mets ce code (trés légèrement modifié) dans Thisworkbook :
(nom de feuille en rouge à adapter)

Code:
Private Sub Workbook_Open()
 
ActiveWorkbook.SaveAs Filename:= _
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
With thisworkbook.worksheets("[B][COLOR=red]Feuil1[/COLOR][/B]")
.Range("B2").Copy
.Range("V2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
end with
Application.CutCopyMode = False
 
End Sub

Bonjour

Merci pour ce code, ce qui change c'est quoi ? qu'il me demande de le sauvegarder à chaque fermeture même si je ne l'ai pas modifié?

Car je ne vois pas d'autre changement.
 

tototiti2008

XLDnaute Barbatruc
Re : macro sauvegarde

Bonjour gui,

ce que ça change, c'est que ça enregistre automatiquement le classeur à l'ouverture (sans que tu cliques sur un bouton).

Mais comme c'est un SaveAs, ça fait que l'emplacement de ta "copie" devient l'emplacement de travail du fichier, ce qui n'est pas forcément ton souhait de départ. Peut-être avec un SaveCopyAs...

D'autre part, ça ne gère pas le test du "lundi", mais dans ce cas il faut se demander que faire si le lundi était férié, et comment gérer ce cas...
 

gui59300

XLDnaute Occasionnel
Re : macro sauvegarde

Bonjour gui,

ce que ça change, c'est que ça enregistre automatiquement le classeur à l'ouverture (sans que tu cliques sur un bouton).

Mais comme c'est un SaveAs, ça fait que l'emplacement de ta "copie" devient l'emplacement de travail du fichier, ce qui n'est pas forcément ton souhait de départ. Peut-être avec un SaveCopyAs...

D'autre part, ça ne gère pas le test du "lundi", mais dans ce cas il faut se demander que faire si le lundi était férié, et comment gérer ce cas...

merci c'est mieux que il sauvegarde à chaque fois

Parcontre quand je remplace SaveAs par SaveCopyAs, ça ne fonctionne plus
 
Dernière édition:

gui59300

XLDnaute Occasionnel
Re : macro sauvegarde

j'ai mis ce code

j'ai changé la partie en rouge mais le code ne fonctionne pas.

Quelqu'un sait pourquoi ?

Private Sub Workbook_Open()

ActiveWorkbook.SaveCopyAs Filename:= _
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05 test.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
With ThisWorkbook.Worksheets("autocontrôle mp05")
.Range("B2").Copy
.Range("V2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
Application.CutCopyMode = False

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : macro sauvegarde

Bonjour gui

quand tu dis cela ne fonctionne pas, cela veut dire quoi ? message d'erreur ou pas le résultat attendu. Si message d'erreur quelle ligne en "débogage" ?

le code ci-dessous fonctionne chez moi :

Code:
ActiveWorkbook.SaveCopyAs "copiesauv.xls"

enregistre une copie dans le répertoire courant.

Assure toi que le chemin est bien valide.

bonne journée
@+
 

gui59300

XLDnaute Occasionnel
Re : macro sauvegarde

Bonjour gui

quand tu dis cela ne fonctionne pas, cela veut dire quoi ? message d'erreur ou pas le résultat attendu. Si message d'erreur quelle ligne en "débogage" ?

le code ci-dessous fonctionne chez moi :

Code:
ActiveWorkbook.SaveCopyAs "copiesauv.xls"

enregistre une copie dans le répertoire courant.

Assure toi que le chemin est bien valide.

bonne journée
@+

voici ce qu'il me marque quand je rentre ton code


En faite le resultat que je cherches et que la macro fasse une copie dans un dossier à l'ouverture. mais que l'emplacement de la copie ne devienne pas l'emplacement de travail
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    42.8 KB · Affichages: 33
  • Sans titre.jpg
    Sans titre.jpg
    42.8 KB · Affichages: 33
  • Sans titre.jpg
    Sans titre.jpg
    42.8 KB · Affichages: 35
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : macro sauvegarde

Re

attention il semblerait que ton code soit placé dans le module de la feuille 1, alors que ceci est une procé dure événementielle se trouvant habituellement dans le module "thisworkbook"... Mais attention, si c'est ce que tu veux, lorsque tu ouvriras la copie, ca posera problème....
 

tototiti2008

XLDnaute Barbatruc
Re : macro sauvegarde

Bonjour gui, Bonjour Pierrot,

La méthode SaveCopyAs n'a pas les mêmes arguments que la méthode SaveAs

à tester :

Code:
Private Sub Workbook_Open()

ActiveWorkbook.[COLOR=red][B][U]SaveCopyAs[/U][/B][/COLOR] Filename:= _ 
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05 test.xls"
With ThisWorkbook.Worksheets("autocontrôle mp05")
.Range("B2").Copy
.Range("V2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
Application.CutCopyMode = False

End Sub

Maintenant, si tu veux que la copie ait la dernière date de sauvegarde, ce serait plutôt :

Code:
Private Sub Workbook_Open()
With ThisWorkbook.Worksheets("autocontrôle mp05")
.Range("B2").Copy
.Range("V2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
End With
Application.CutCopyMode = False

ActiveWorkbook.[COLOR=red][B][U]SaveCopyAs[/U][/B][/COLOR] Filename:= _ 
"D:\Documents and Settings\glisicki\Bureau\Sauvegarde HAC\mp05 test.xls"

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : macro sauvegarde

Re, bonjour toto

le code ci-dessous fonctionne chez moi...

Code:
Option Explicit
Private Sub Workbook_Open()
ThisWorkbook.SaveCopyAs "C:\MesDocuments\Excel\Test\copiesauv" & Format(Now, "ddmmyyyyhhnnss") & ".xls"
End Sub

chemin à adapter, rajouté l'heure au fichier de sauvegarde, évite de ré enregistrer sous le même nom un fichier déjà ouvert, ce qui provoque une erreur...

@+
 

Discussions similaires

Réponses
3
Affichages
664
Réponses
2
Affichages
757