Signaler

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

Posez votre question atinauJ 43Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - Dernière réponse le 16 févr. 2017 à 16:09 par atinauJ
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 
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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
Donnez votre avis
Utile
+0
plus moins
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 19385Messages postés lundi 23 juillet 2007Date d'inscription ContributeurStatut 13 avril 2017 Dernière intervention - 16 févr. 2017 à 14:27
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
Répondre
Donnez votre avis
Utile
+0
plus moins
ah ! c'est le petit bout qui me manquait !
effectivement, ça marche !

mais comment je fais pour le débarrer maintenant ????
Donnez votre avis
Utile
+0
plus moins
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


Donnez votre avis
Utile
+0
plus moins
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 19385Messages postés lundi 23 juillet 2007Date d'inscription ContributeurStatut 13 avril 2017 Dernière intervention - 16 févr. 2017 à 15:49
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
Répondre
Donnez votre avis
Utile
+0
plus moins
fiou, j'y suis arrivée.

merci beaucoup
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !