J'ai monté un fichier de facture (avec l'aide de ce forum) et je voudrais qu'il soit bien protégé.
Dans ma macro, j'ai prévu de déverrouiller les feuilles, au tout début, le temps que la macro exécute tout ce qui s'y trouve, et ça reverrouille à la fin. Le hic, c'est qu'il n'y a pas de mot de passe.
Par contre, comme ce fichier était une commande d'un client, on ne veut pas qu'il le remette à d'autres. C'est notre produit.
Lorsqu'on protège une feuille, on peut y mettre un mot de passe. Mais cette opération dans une macro exige qu'on tape le mot de passe pendant l'exécution de la macro. Je ne veux pas que le client ait à taper quoi que ce soit, je ne veux pas lui donner le mot de passe. Lui, il n'a qu'à faire ses factures et cliquer sur le bouton qui exécute la macro. Je veux donc que le mot de passe soit incorporé dans la macro. Est-ce possible ?
Et par la suite, comment l'empêcher d'aller voir l'historique de la macro ? Est-ce que ça se protège, une macro ?
Autrement dit, il ne faut pas qu'il soit capable de distribuer notre produit à d'autres et que les autres le modifient à leur guise. S'ils veulent en avoir un aussi, il devra faire appel à nos services.
'code de protection feuille sans avoir a deproteger pour ecrire dans les cellules avec du VBA
Private Sub Workbook_Open()
For n = 1 To Worksheets.Count
With Worksheets(n)
.EnableAutoFilter = True 'pas de filtre
.Protect Password:="toto", DrawingObjects:=True, Contents:=True, Scenarios:=True, userInterfaceOnly:=True
.EnableSelection = xlNoSelection 'pas de selection cellule
End With
Next n
End Sub
Il faut aussi proteger le code:
explorerateur de projets
clic droit sur votre projet
propriete de VBAproject
Protection
Cocher Verrouiller le projet....
saisir mot de passe et confirmation
est-ce que je l'ai mis au bon endroit ? voici le dernier segment de ma macro:
ActiveSheet.Protect "toto" (ce que je viens de rajouter)
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
ai-je mis le mot de passe au bon endroit ?
et j'ai mis un mot de passe dans le VBA mais je ne sais pas si j'ai fait comme il faut car je suis quand même capable d'ouvrir le VBA et excel ne m'a pas demandé le mot de passe pour l'ouvrir. Faut pas qu'on puisse l'ouvrir pour voir les détails. Le client doit juste pouvoir exécuter la macro en cliquant sur un bouton prévu à cet effet.
oui, c'est au bon endroit, je viens de coller votre code et de tester, ça fonctionne.
pour protèger VBA,, je répète:
afficher VBA / Outil / propriétés de VBA project/ protection et cocher
verrouiller le projet pour affichage
entrez votre mot de passe
fermer la fenêtre VBA
cette protection n'est effective qu'après enregistrement, fermeture et réouverture du fichier crdlmnt
Le bout de protection de feuille est dans la macro. ça va pour ça.
Mais c'est la macro qui est protégée maintenant. Et je ne peux plus ouvrir la macro pour la modifier, le système ne me demande pas le mot de passe.
Toutes les options sont en gris.
J'ai fait tout ceci:
VBA / Outil / propriétés de VBA project/ protection et cocher
verrouiller le projet pour affichage
entrez votre mot de passe
fermer la fenêtre VBA
je suis coincée :(
comprend pas
si vous avez protègé VBA avec mots de passe (demandé deux fois, on est d'accord)
il suffit:
d'ouvrir le fichier
d'afficher la fenêtre VBA
de cliquer à droite sur le + de la ligne VBA project
et là VBA demande le mot de passe pour afficher
ou encore, refaire le chemin outil / propriètés / protection et VBA demande le mot de passe
Voyez avec ce modèle si ça fonctionne chez vous, le mot de passe VBA est "ata"
https://mon-partage.fr/f/jD67rnHT/
crtdlmnt