Sauvegarde à deux endroits différents

  • Initiateur de la discussion Fox
  • Date de début
F

Fox

Guest
Hello le forum,

Comment pourrai-je faire pour sauvegarder mon classeur à deux endroit différent par l'intermédiare d'une macro:

Voilà ce que j'ai déjà pour la sauvegarde vers un endroit:

Sub Sauver()
Dim NomFichier As String, Chemin As String

Chemin = "S:\Doc\cm\Production\Rapport_"
NomFichier = Format(Now(), "yymmdd")
ActiveWorkbook.SaveAs (Chemin & NomFichier)
End Sub

j'aimerai que la sauvegarde se fait en même temps sur

c:\Doc\cm\Production\Rapport_"

et pour finir que les pages du dossier lors de la sauvegarde sur

S:\Doc\cm\Production\Rapport_"

soient protéger par un mot de passe afin que l'on ne puisse pas changer les informations.

Bien à vous
 
A

alain

Guest
Bonsoir,

Tu peux essayer comme ci-dessous :

Sub Sauver()
Dim NomFichier As String, Chemin1 As String, Chemin2 As String

Chemin1 = "C:\Doc\cm\Production\Rapport_"
Chemin2 = "S:\Doc\cm\Production\Rapport_"
NomFichier = Format(Now(), "yymmdd")

ActiveWorkbook.SaveAs (Chemin1 & NomFichier)

For Each Sheet In ActiveWorkbook.Sheets
Sheet.Protect ("Mot_de_passe")
Next
ActiveWorkbook.SaveAs (Chemin2 & NomFichier)
End Sub

@+
 
L

LaurentTBT

Guest
Bonsoir.

Alain a dégainé avant moi.

Juste une petite idée: si tu ne veux pas que la version sous S:\ puisse être modifiée, pourquoi ne pas l'enregistrer avec un mot de passe à l'écriture au lieu de protéger toutes les feuilles?

ActiveWorkbook.SaveAs Filename:= _
Chemin & NomFichier, WriteResPassword:="Toto"
 
F

Fox

Guest
Alain,

L'enregistrement sur les 2 endroits fonctionne très bien

il protège également le classeur, mais si j'enlève la protection il ne me demande pas de mot de passe? donc sur le reseau S:\ n'importe qui peut venir changer mes données.

Laurent,

A quel endroit tu places tes lignes par rapport au ligne d'alain, désolé mais je suis pas un pro de la programmation.

Merci à vous
 
X

Xavier

Guest
Bonjour,

Tu mets: , WriteResPassword:="Toto"
sur la même ligne après : ActiveWorkbook.SaveAs (Chemin2 & NomFichier)

J'ai testé sur ma macro de fermeture, cela marche pile poil.

A toi de voir si tu souhaites garder les protections des feuilles.

@+
 
F

Fox

Guest
merci, en fait ce que j'aurai voulu et je me suis peut-être mal exprimé c'est que toutes les cellules de l'ensemble du dossier soit protégé également par un mot de passe. mais la protection ne doit que se faire que sur la sauvegarde vers le s:\...
 
L

LaurentTBT

Guest
Bonjour tout le monde.

Juste avant de partir:

Pour moi, la macro d'Alain doit parfaitement fonctionner.
Il faut peut-être juste vérifier que toutes les cellules du classeur sont vérouillées pour que la protection fonctionne: voici une petite macro qui, insérée dans ton classeur et lancée à partir de ce même classeur, fera la vérification automatiquement:

Sub Vérouillage()
For Each Feuille In ActiveWorkbook.Sheets
Feuille.unprotect password:="Toto"
Feuille.activate
Cells.Locked = True
Next Feuille
end sub

Sinon, avec la macro d'Alain, toutes les cellules sont effectivement protégées par mot de passe, mais ce mot de passe ne sera demandé que si:
quelqu'un ouvre le fichier à partir de S,
puis essaye de modifier une cellule. C'est à ce moment qu'il aura un message d'alerte.

Je suis sur le départ, donc je ne peux poursuivre le fil.
Mais d'autres pourront certainement t'aider si cela ne suffit pas.

Au revoir.
 
F

Fox

Guest
Voilà ça fonctionne voici ce que j'ai marqué:

Sub Sauver()
Dim NomFichier As String, Chemin1 As String, Chemin2 As String

Chemin1 = "C:\Rapport_"
Chemin2 = "S:\Rapport_"
NomFichier = Format(Now(), "yymmdd")
ActiveWorkbook.SaveAs (Chemin1 & NomFichier)
For Each Feuille In ActiveWorkbook.Sheets
Feuille.Unprotect
Feuille.Activate
Cells.Locked = True
Next Feuille
For Each Feuille In ActiveWorkbook.Sheets
Feuille.Activate
Cells.Locked = True
Feuille.Protect Password:="toto"
Next Feuille
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Protect ("toto")
Next
ActiveWorkbook.SaveAs (Chemin2 & NomFichier)
End Sub

La formule fonctionne bien mais deux léger problèmes:

1) quand j'ouvre mon classeur qui vient d'être sauver avec la macro ci dessus, à l'ouverture du fichier je me retrouve à la dernière page du classeur, comment faire pour que la lecture se fasse sur la première page du classeur à l'ouverture du fichier.

2) Je dois sauver mon fichier plusieurs fois par jour, donc comme j'ai mis un mot de passe sur le S:\ lorsqu'il veut déprotéger il me demande le mot de passe pour toutes les feuilles du classeur.

N'y a t-il pas un moyen d'y contribuer ?

Merci

Bien à vous
 
A

Alain

Guest
Bonjour,

ActiveWorkbook.SaveAs (Chemin2 & NomFichier)
End Sub

Avant ces 2 lignes tu mets :

ActiveWorkbook.Sheets(1).select
Range("A1").Select

Pour ta 2ème question, il faut utiliser Unprotect pour chaque feuille du classeur dans une macro auto_open :

Sub auto_open()
MotdePasse = InputBox("Mot de passe", "Mot de passe", "")
If MotdePasse <> "" Then
On Error GoTo erreur
For Each Feuille In ActiveWorkbook.Sheets
Feuille.Unprotect Password:=MotdePasse
Next Feuille
End If
Exit Sub
erreur:
MsgBox "Mot de passe incorrect"
auto_open
End Sub


@+
 
F

Fox

Guest
Merci ça fonctionne, mais le problème c'est que plus rien n'ai protéger à l'ouverture du fichier, et le but c'est que sur le s:\ ( c'est un réseau) personne ne peut modifier mes données.

@+
 

Discussions similaires

Réponses
3
Affichages
522

Statistiques des forums

Discussions
312 333
Messages
2 087 371
Membres
103 528
dernier inscrit
maro