Aide macro de protection

doclefou

XLDnaute Nouveau
Bonsoir à toutes & à tous adpetes d'XL,

Juste une question toute bête, bah je l'espère :

Sur un de mes fichiers XL avec une des feuilles qui est protégés, je souhaite, par lintermédiaire d'un bouton qui exécute une macro, enlever la protection (me demande le mot de passe), faire une mise en forme et remettre la protection avec un mot de passe.

Ne connaissant pas la programmation, j'ai exécuté l'enregitsreur. Cela me convient qu'au 2 tiers.

Je m'explique :
1) La macro enlève la protection en me demandant le mot de passe...round 1 OK
2) La macro fait bien la mise en forme souhaitée...round 2 OK
3) La macro protège bien mais ne me demande pas de mot passe à saisir.

Donc ma question est la suivante : Est-ce possible ? Si oui quel est le code à renseigner ?

Je pourrai mettre le mot de passe dans le code de la macro mais comme j'ai déjà réussi à trouver un mot de passe en éditant la macro d'un fchier XL, je ne souhaiterai pas que dans mon fichier, le code soit inscrit en dur.

Vous me direz peut-être que c'est un moyen sûr de ne pas l'oublier, je ne souhaite pas sécurisé à 3000% mon travail mais juste que certains de mes collègues qui ont les dents longues, ne tirent rien de mon travail...de mes heures de travail.

Merci pour votre aide.
 

doclefou

XLDnaute Nouveau
Re : Aide macro de protection

Bonsoir Robert,

Merci de ta réponse supre rapide.

Mais c'est que je ne souhaiterai pas, c'est à dire mon mot de passe dans le code, je préfèrerai que le mot de passe me soit demandé.

Alors peut-être j'en demande trop et que ce soit pas possible mais si je pouvais le faire, je serai plus satisfait.

Si tu as une idée ou si quelqu'un à cette idée, merci de le faire savoir.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro de protection

Bonsoir Doclefou, bonsoir le forum,

Ooops en effet j'avais mal lu. Il suffrait de rajouter une InputBox :
Code:
Public Sub Macro1()
Dim mdp As String

mdp = Application.InputBox("Tapez le mot de passe.", "MOT DE PASSE", Type:=2)
If mdp = "" Or mdp = False Then Exit Sub
On Error GoTo fin
ActiveSheet.Unprotect (mdp)
'ton code
ActiveSheet.Protect Password:=mdp

fin:
MsgBox "Mot de passe invalide !"
End Sub
 

doclefou

XLDnaute Nouveau
Re : Aide macro de protection

Bonjour Robert et le forum,

Merci pour ta réponse.

Je viens de mettre ma macro à jour avec le code que tu m'a communiqué mais j'ai une erreur.
Voici mon code :
Sub CommandeReçue()

' CommandeReçue Macro
' Mise en forme lors de la réception d'une ou plusieurs commandes
Dim mdp As String
mdp = Application.InputBox("Tapez le mot de passe.", "MOT DE PASSE", Type:=2)
If mdp = "" Or mdp = False Then Exit Sub
On Error GoTo fin
ActiveSheet.Unprotect (mdp)

With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect Password:=mdp, DrawingObjects:=True, Contents:=True, Scenarios:=True

fin:
MsgBox "Mot de passe invalide !"
End Sub

Il me fait une erruer sur cette partie : mdp = Application.InputBox("Tapez le mot de passe.", "MOT DE PASSE", Type:=2)

As-tu une idée du pourquoi et du comment résoudre ?

Je vais essayer de voir ce qui ne va pas

Merci
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro de protection

Bonjour Doclefou, bonjour le forum,

Chez moi le code plante aussi mais une ligne en dessous de celle que tu signales... Essaie comme ça (les modifications sont en rouge) :
Code:
Sub CommandeReçue()
 
' CommandeReçue Macro
' Mise en forme lors de la réception d'une ou plusieurs commandes
Dim mdp as [COLOR=red]Variant[/COLOR]
mdp = Application.InputBox("Tapez le mot de passe.", "MOT DE PASSE", Type:=2)
If mdp = "" Or mdp = False Then Exit Sub
On Error GoTo fin
ActiveSheet.Unprotect (mdp)
[COLOR=red]On Error GoTo 0 'annule la gestion des erreur (pas obligatoire mais c'est mieux)[/COLOR]
 
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
Selection.Locked = True
Selection.FormulaHidden = False
ActiveSheet.Protect Password:=mdp, DrawingObjects:=True, Contents:=True, Scenarios:=True
[COLOR=red]Exit Sub '(j'avais oublié sinon le message apparait toujours)[/COLOR]
 
fin:
MsgBox "Mot de passe invalide !"
End Sub

J'ai testé, ça fonctionne...
 

doclefou

XLDnaute Nouveau
Re : Aide macro de protection

Merci Robert,

Cela marche nikel.

Bon je vais être un relou mais est-il possible de ne pas voir le mot de passe lors de la demande de l'input box ?

Si ce n'est pas possible, ce n'est pas grave, je me contenterai de ce que tu m'as donné.

Merci en tous cas.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro de protection

Bonsoir Doclefou, bonsoir le forum,

En résumé, tu imposes un mot de passe à l'onglet, ("toto" par exemple) et tu lances la macro. L'InputBox s'affiche. L'utilisateur tape le mot de passe. Si il est bon ("toto") la mise en forme s'effectue, sinon rien ne se passe et il a un message "Mot de passe invalide !". Mais "toto" n'apparaît jamais ni dans la code ni dans l'InputBox !

Donc je ne comprends pas ta question ! Si c'est ce qu'affiche l'InputBox qui te gêne :

Code:
mdp = Application.InputBox("texte", "titre" , Type:=2)
tu peux changer le titre (le texte aussi d'ailleurs mais il faut que l'utisateur sache ce qu'il doit faire il me semble) :
Code:
mdp = Application.InputBox("Tapez le mot de passe.","TITE DE TON CHOIX" , Type:=2)
ou le supprimer :
Code:
mdp = Application.InputBox("Tapez le mot de passe.", Type:=2
dans ce cas elle portera le titre par défaut : "Entrée".


Il est clair que si tu as la mauvaise idée de donner comme titre à l'InputBox : "Le mot de de passe est : toto ! ", l'utilisateur va bien se marrer.
Juste une question, je vais être relou moi ausi, tu serais pas du genre à écrire à l'encre indélébile ton code sur ta carte bleue toi ?
 

Softmama

XLDnaute Accro
Re : Aide macro de protection

Bsoir doclefou, bsoir Robert,

Robert, je crois que ce qu'a tenté maladroitement de dire doclefou, c'était de savoir s'il était possible dans une inputbox qu'on ne voit pas les caractères affichés lorsqu'on tape son mot de passe (la plupart des mdp affichent des ***** à la place).

Si c'est bien le sens de ta question, doclefou, sache que c'est faisable via les API windows mais que c'est plutôt compliqué. Le plus simple à mon avis est de créer un petit Userform avec un champ Textbox qui lui permet directement avec la propriété PasswordChar de remplacer chaque touche frappée par le caractère de son choix (par exemple *)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Aide macro de protection

Bonsoir le fil, bonsoir le forum,

Ha p... ! Bon sang mais c'est bien dur !!!! Quel âne je suis !!!! Merci Softmama pour m'éclairer. Pardon Doclefou... Bon je mets mon pyjama et je vais me coucher moi. J'ai assez dit de co... pour la journée.
 

doclefou

XLDnaute Nouveau
Re : Aide macro de protection

Bonjour à toutes & à tous,

Merci Robert & Softmama.

Je ne commenterai pas le premier post de Robert :p ;). Je pensais être clair dans ma demande mais comme quoi, ce qui est clair pour certains et plutôt tordu...lol...pour d'autres
Non je ne mets de l'encre indélébile sur ma CB, c'est juste que j'ai passé pas mal de temps à faire mon fichier et à le faire évoluer au fur et à mesure de mes connaissance en XL.

Bon si ce n'est pas si simple à faire, je ne vais pas faire perdre du temps à vous tous et je laisserai mon fichier ainsi.
Ce n'est qu'un simple fichier de gestion de copieur (stock, commande, intervention & relevé de compteur).
C'est dommage qu'il n'est pas possible d'envoyer de gros fichier ici (1,7Mo), vous auriez pu voir ce que cela donne.

Merci à vous toutes & tous pour votre aide.
 

Staple1600

XLDnaute Barbatruc
Re : Aide macro de protection

Bon matin dominical (sous la pluie ici) à tous

Une question m'habite :confused:
Ce n'est qu'un simple fichier de gestion de copieur (stock, commande, intervention & relevé de compteur).

Chez moi, simple veut dire (collons à l'époque :rolleyes:), ne risquant pas de se trouver sur Wikileaks :D

Donc pourquoi protéger (* illusoirement ...) ce qui (à mon sens en tout cas) pourrait l'être avec la protection native d'Excel (toute aussi fragile) ?
Vous me direz peut-être que c'est un moyen sûr de ne pas l'oublier, je ne souhaite pas sécurisé à 3000% mon travail mais juste que certains de mes collègues qui ont les dents longues, ne tirent rien de mon travail...de mes heures de travail.

Si tu es salarié, négocie tes droits d'auteurs ...
(cf le Droit du Travail, ou cette réponse que j'ai faite dans un fil de 2007Lien supprimé
Voir si cela à évoluer en 2010.

*: il suffit à ton collègue aux dents longues (spécial decicace à C-C ;) ) d'ouvrir ton fichier en désactivant les macros (ou utiliser de quoi protéger ton classeur dans l'instant)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Aide macro de protection

Re


Pour ceux que cela intéresse
Notons toutefois qu’il existe une exception importante en matière de logiciels. En effet, il résulte de l'article L. 113-9 alinéa 1er du Code de la Propriété Intellectuelle que sauf dispositions statutaires ou stipulations contraires, les droits patrimoniaux sur les logiciels et leur documentation crées par un employé dans l'exercice de ses fonctions ou d'après les instructions de son employeur sont dévolus à ce dernier qui est seul habilité à les exercer.

Cette dévolution est limitée aux droits patrimoniaux. Le salarié conserve donc son droit moral. Cette solution, satisfaisante pour les employeurs ne devrait-elle pas être logiquement étendue à d’autres œuvres créées par les salariés ?
citation trouvée ici
 

Discussions similaires

Réponses
2
Affichages
155
Réponses
6
Affichages
196
Réponses
5
Affichages
397
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 177
Messages
2 085 974
Membres
103 076
dernier inscrit
LoneWolf90