Macro Excel Enregistrer sous et protéger copi

Fermé
Week End Messages postés 4 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 2 mars 2010 - 27 févr. 2010 à 08:39
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 27 févr. 2010 à 16:54
Bonjour, à toutes et à tous, je viens vou sexposer un problème.
En fait, j'ai créé un code vba sous excel 2003 permettant de sauvegarder une copie de mon formulaire sous un format ddmmyyy...comme suit:
Public Sub CommandButton1_Click()
Dim nom As String
nom = Range("C14") & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmmss") & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs Filename:="G:\Doc\Archives\" & Range("C14") & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmmss") & "_" & ActiveWorkbook.Name
rep = MsgBox("La fiche est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
End Sub

Jusqu'ici ça va. Seulement ce que j'ai du mal à faire c'est:

protéger la copie. Je m'explique:
c'est à dire
si la valeur de la cellule C3 du formulaire égale à Vincent protéger la copie avec un code genre vincent#2010
si la valeur de la celllule C3 du formulaire égale à Bruno protéger la copie avec un code genre bruno2010#
ainsi de suite ce, pour 8 destinataire.

LE but étant que nul ne puisse consulter la copie des autres.

Voilà, j'espères que c'ests faisable, si oui toute aide sera la bienvenue.

Merci
A voir également:

5 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
27 févr. 2010 à 10:57
Bonjour,

Dans 'outils /options / sécurité' tu peux crypter ton fichier avec différentes méthodes. La solidité dépend de la méthode et de la longueur de la clé.
Exemple de code généré avec protection 'office standard' :
    ActiveWorkbook.SetPasswordEncryptionOptions PasswordEncryptionProvider:="", _
        PasswordEncryptionAlgorithm:="OfficeStandard", PasswordEncryptionKeyLength:=40 _
        , PasswordEncryptionFileProperties:=False
    ActiveWorkbook.Password = "2010#"
    ActiveWorkbook.SaveAs Filename:="C:\Classeur1.xls", _
        FileFormat:=xlNormal, Password:="2010#", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

Tu peux aussi faire une compression avec mot de passe avec zip ou mieux avec rar (plus difficile à cracker).

Dans tous les cas le destinataire devra saisir le mot de passe.
Tout autre méthode par macro qui reconnait l'utilisateur est trop facilement outrepassable.
eric
0
Week End Messages postés 4 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 2 mars 2010
27 févr. 2010 à 12:37
Merci d'avoir répondu à ma question eriic. En fait, ce que je veux c'est protéger la copie. C'est à dire une fois le formulaire remplie, j'en fais une copie sauvegarde dans un dossier dont le chemin est spécifié dans mon code. Seulement pendant l'enregistrement, il faudrait que la copie se fasse avec un mot de passe variable selon le destinataire qui se trouve dans la cellule C3.

C'est à dire (je dis n'importe quoi) If range ("C3").Value= Vincent alors enregistrer SaveCopy avec le mot de passe vincent#2010
et ce, pour 8 destinaires.

Merci, ton idée me semble interressante.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
27 févr. 2010 à 12:45
Et bien il faut que tu fasses 8 copies en changeant le mot de passe...
0
Week End Messages postés 4 Date d'inscription samedi 27 février 2010 Statut Membre Dernière intervention 2 mars 2010
27 févr. 2010 à 16:16
Re-Bonjour,

Criis, pour en revenir à ta réponse fort intéressante, j'aimerais savoir ou le mettre. Mais j'ai essayé ceci:
Dim nom As String
nom = Range("C14") & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmmss") & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs Filename:="G:\Doc\Archives\\" & Range("C14") & "_" & Format(Date, "ddmmyyyy") & "_" & Format(Time, "hhmmss") & "_" & ActiveWorkbook.Name
rep = MsgBox("La fiche est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
ActiveWorkbook.SetPasswordEncryptionOptions PasswordEncryptionProvider:="", _
PasswordEncryptionAlgorithm:="OfficeStandard", PasswordEncryptionKeyLength:=40 _
, PasswordEncryptionFileProperties:=False
ActiveWorkbook.Password = "2010#"
ActiveWorkbook.SaveAs FileFormat:=xlNormal, Password:="2010#", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
Seulement, ce que je voulais faire c'est non pas appliquer cette protection et au formulaire et à sa copie, mais plutôt à la copie et seulement à la copie.

J'espères m'expliquer clairement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
27 févr. 2010 à 16:54
Tu cherchers du compliqué là où il n'y en a pas.
Pour que la copie l'aie tu es obligé de le mettre sur ton fichier. Tu fais tes 8 sauvegardes en changeant le mot de passe à chaque fois et tu l'enlèves à la fin.
Fais-le avec 2 sauvegardes en enregistrement de macro tu y verras plus clair.
0