Protection de feuille dans macro (excel 2013) [Résolu/Fermé]

Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
- - Dernière réponse : atinauJ
Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
- 16 févr. 2017 à 16:09
Bonjour,

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.

merci pour votre aide et bonne journée.



Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
14713
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 septembre 2019
1171
1
Merci
Bonjour,

'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

Et se rappeler du mot de passe

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60564 internautes nous ont dit merci ce mois-ci

Messages postés
24360
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
12 septembre 2019
4753
0
Merci
Bonjour

il suffit de rajouter le mot de de passe entre guillemets dans les lignes de protection:

Activesheet.protect "mot de passe"

(idem avec Unprotect )

et pour être complet, verrouillez VBA pour que vos macros ne soient pas lisibles, sinon ce n'est rien de fait
  • Développeur VBA / Outil / Propriétés de VBA /protection

entrez le mot de passe,

et celui ci, ne l'oubliez pas!

crdlmnt
La qualité de la réponse dépend surtout de la clarté de la question, merci!
Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
1
0
Merci
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.

merci
Vaucluse
Messages postés
24360
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
12 septembre 2019
4753 -
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
Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
1
0
Merci
ah ! c'est le petit bout qui me manquait !
effectivement, ça marche !

mais comment je fais pour le débarrer maintenant ????
Messages postés
24360
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
12 septembre 2019
4753
0
Merci
pour exécuter la macro, la débuter par:
active.sheet.unprotect "Toto"
et terminer par
active.sheet.protect "Toto"

pour libérer VBA, même chemin via le développeur que pour verrouiller et la fenêtre va vous demander le mot de passe
crdlmnt


Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
1
0
Merci
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 :(
Vaucluse
Messages postés
24360
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
12 septembre 2019
4753 -
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
Messages postés
43
Date d'inscription
jeudi 9 février 2017
Statut
Membre
Dernière intervention
5 mars 2017
1
0
Merci
fiou, j'y suis arrivée.

merci beaucoup