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

atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - 16 févr. 2017 à 00:48 - Dernière réponse : atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention
- 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 
43Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention

9 réponses

Répondre au sujet
f894009 12541 Messages postés dimanche 25 novembre 2007Date d'inscription 11 décembre 2017 Dernière intervention - Modifié par f894009 le 16/02/2017 à 08:04
0
Utile
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
Commenter la réponse de f894009
Vaucluse 20837 Messages postés lundi 23 juillet 2007Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - Modifié par Vaucluse le 16/02/2017 à 08:04
0
Utile
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!
Commenter la réponse de Vaucluse
atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - Modifié par atinauJ le 16/02/2017 à 14:11
0
Utile
1
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 20837 Messages postés lundi 23 juillet 2007Date d'inscriptionContributeurStatut 11 décembre 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
Commenter la réponse de atinauJ
atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - Modifié par atinauJ le 16/02/2017 à 14:52
0
Utile
ah ! c'est le petit bout qui me manquait !
effectivement, ça marche !

mais comment je fais pour le débarrer maintenant ????
Commenter la réponse de atinauJ
Vaucluse 20837 Messages postés lundi 23 juillet 2007Date d'inscriptionContributeurStatut 11 décembre 2017 Dernière intervention - 16 févr. 2017 à 15:10
0
Utile
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


Commenter la réponse de Vaucluse
atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - 16 févr. 2017 à 15:28
0
Utile
1
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 20837 Messages postés lundi 23 juillet 2007Date d'inscriptionContributeurStatut 11 décembre 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
Commenter la réponse de atinauJ
atinauJ 43 Messages postés jeudi 9 février 2017Date d'inscription 5 mars 2017 Dernière intervention - 16 févr. 2017 à 16:09
0
Utile
fiou, j'y suis arrivée.

merci beaucoup
Commenter la réponse de atinauJ