protégé un bouton

Yohan05

XLDnaute Occasionnel
Bonjour,

Est-ce possible de protégé l'utilisation d'un bouton?

Je connais bien entendu les protections de feuilles et classeurs mais j’aimerais en fait que les utilisateurs peuvent faire tout sauf actionner un bouton qui actionne une macro.

Merci pour votre aide...

Yohan

Sub test()
'
' test Macro
Sheets("test").Select
Sheets("test").Unprotect Password = "xxx"
Range("A1").Select
Selection.AutoFill Destination:=Range("A1:A22"), Type:=xlFillDefault
Range("A1:A22").Select
Sheets("test").Protect Password = "xxx"
Sheets("DATA").Select
End Sub
 

fanfan38

XLDnaute Barbatruc
Re : protégé un bouton

Bonjour et meilleurs voeux
ce que tu peux faire c'est mettre une saisie de mot de passe en debut de macro...
Ou masquer le bouton...et dans la macro workook open saisir mot de passe mode administrateur...
A+ François
 

Yohan05

XLDnaute Occasionnel
Re : protégé un bouton

Bonne année à vous aussi,

En fait j'ai réussi à protéger les macros c'est déjà très bien mais en fait je vous explique :
Ce n'est pas à l'ouverture que le mot de passe doit être introduit mais juste quand on clique sur le bouton.
Ce que je cherche est en fait la protection d'une exécution de macro mais je ne protège pas mes classeurs(ni les feuilles) car tout interagit.

Le but est que 1 seule personne puisse faire interagir les classeurs mais le bouton reste sur la feuille.

Merci de vos conseils..
Yohan
 

xhudi69

XLDnaute Accro
Re : protégé un bouton

Bonjour Yohan05, le Forum
Bonjour fanfan38, gilbert_RGI et BONNE ANNEE 2013

en PJ un fichier utilisant un InputBox, le code est Yohan, si cela convient.

@+
 

Pièces jointes

  • Yohan05_test.xlsm
    16.3 KB · Affichages: 45
  • Yohan05_test.xlsm
    16.3 KB · Affichages: 46
  • Yohan05_test.xlsm
    16.3 KB · Affichages: 46

Yohan05

XLDnaute Occasionnel
Re : protégé un bouton

c'est exactement ce que je cherchais .
Merci beaucoup

J'ai encore une petite question :
Si je veux empêcher l'impression d'une feuille moyennant mot de passe
Comment faire? est-ce qu'il s'agit de VBA?

Merci

Yohan
 

xhudi69

XLDnaute Accro
Re : protégé un bouton

Re bonjour,

C'est exactement la même chose, dans l'évennement Click de ton bouton "IMPRESSION" tu mets la macro de l'InputBox et tu intercales ta macro à la place de
Code:
Range("A1").Value = "COUCOU"

Voir le fichier joint

@+
 

Pièces jointes

  • Yohan05_test.xlsm
    20 KB · Affichages: 37
  • Yohan05_test.xlsm
    20 KB · Affichages: 40
  • Yohan05_test.xlsm
    20 KB · Affichages: 38

Yohan05

XLDnaute Occasionnel
Re : protégé un bouton

Merci pour ton aide mais en fait il n'y a pas de bouton impression.
Il s'agit ici de bloquer l'impression du document pour les utilisateur qui voudraient l'imprimer par la procédure habituelle.
A savoir fichier => imprimer

Ma question est donc :
Est ce qu'une macro se lançant à l'ouverture du fichier excel peut bloquer l'impression?

Merci
 

Yohan05

XLDnaute Occasionnel
Re : protégé un bouton

c'est du beau travail , cela m'aide beaucoup mais il me reste un problème.
En fait il n'y a pas de bouton print mais il y a bien un autre bouton qui déclenche une impression.
Mon problème :
J'ai déjà un code pour la protection du bouton donc est-ce possible d'enlever la protection de print sans le message et sans devoir retaper le mot de passe?
Voici l’extrait de mon code :
Else
End If
MsgBox ("Commande validée (délai à respecter)")
ActiveSheet.PageSetup.PrintArea = "$A$1:$H$53"
ActiveSheet.PrintOut
p = Sheets("Commande").Range("g4").Value
t = Sheets("Commande").Range("b4").Value
r = Sheets("Commande").Range("b4")
NomFeuil = Range("H5").Value
l = "H:\Gestion de production\Commande Archivage\" & p & Format(Date, "yyyy-mm-dd") & "_" & ".xlsm"

'mod i,j,k,y,z
y = Sheets("Commande").Range("g5").Value

Sheets("Commande").Range("Z1").Value = DateValue(Sheets("Commande").Range("G5").Value & " " & Sheets("Commande").Range("H5").Value)

e = Sheets("Commande").Range("Z1").Value

Workbooks.Open Filename:="\\Serveur\documents\GESTION DE PRODUCTION\Analyse\Analyse du système.xlsm", UpdateLinks:=0



Tout cela est dans (module 2) il faudrait que la modif de ce code annule mess dans ton exemple (chez moi module 6)


Merci pour ton aide ...
Yohan
 

xhudi69

XLDnaute Accro
Re : protégé un bouton

Re bonjour:

Si je comprends bien:
Tu as un bouton "PRINT" Protégé par mot de passe pour effectuer l'impression
Le Workbook est protégé en impression
donc même si tu entre le bon PassWord, l'impression ne se produit pas du fait que le Workbook est lui-même protégé en impression.

Solution:
1) On choisi une cellule dans la feuille (ex "VDX1000") très éloignée,
2)Le protocole est: si Range("VDX1000").Value = "" Alors pas d'impression; si Range("VDX1000").Value = "1" Alors impression OK
3) On initialise à l'activation de la feuille:
Code:
Private Sub Worksheet_Activate()
Range("VDX1000").Value = ""
End Sub
4)On pose les conditions du Workbook_BeforePrint:
Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)

If Sheets("Feuil1").Range("VDX1000").Value = "1" Then
Cancel = False
End If

If Sheets("Feuil1").Range("VDX1000").Value = "" Then
Cancel = True
mess
End If

End Sub
5)Dans le début de la procédure du CommandButton1.Click
Code:
Sub Bouton1_Clic()

Sheets("Feuil1").Range("VDX1000").Value = ""
6)Si le bon code est entré, on valide l'impression:
Code:
        Else
          Select Case strName
            Case "Yohan"
            
                Sheets("Feuil1").Range("VDX1000").Value = "1"

En PJ le fichier exemple.

@+
 

Pièces jointes

  • Yohan05_V3test.xlsm
    23.2 KB · Affichages: 36

Yohan05

XLDnaute Occasionnel
Re : protégé un bouton

Bonjour,

Le code est parfait, il y a impression mais comme tu peux le voir je n'ai pas de bouton uniquement pour print mais bien une fonction print alors que le classeur est protégé contre l'impression mais ce bouton est aussi protégé.
Ma question est donc comment ne pas entré 2 fois le même code? est-ce possible? :

Sub envoyer_Click1()


strName = InputBox(Prompt:="Entrer Votre Code", _
Title:="ACCES", Default:="")

If strName = "" Or _
strName = vbNullString Then
Exit Sub
Else
Select Case strName
Case "Yohan"

End Select
End If
If MsgBox("Etes vous sûr?", vbYesNo) = vbYes Then
Dim Nom As String, Fichier As String, Chemin As String, NomFeuil As String
Dim Ws As Worksheet
'Nom à donner au nouveau classeur
Nom = Sheets("Commande").Range("G4").Value
'ThisWorkbook.Path permet de recuperer le chemin du classeur actif
Fichier = Nom & Format(Date, "yyyy-mm-dd") & "_" & ".xlsm"
'Enregistrement au format normal du classeur
Chemin = "H:\Gestion de production\Commande Archivage\"
ActiveWorkbook.SaveAs Chemin & Fichier
If LCase(Sheets("Commande").Range("G4").Value) Like "*xxx*" Then
ActiveWorkbook.SendMail Recipients:="xxx@xxx.be"
Else
End If
If LCase(Sheets("Commande").Range("BC1").Value) Like "*stephanie*" Then
ActiveWorkbook.SendMail Recipients:="xxx@xxx.be"
Else
End If
If LCase(Sheets("Commande").Range("BC1").Value) Like "*marie*" Then
ActiveWorkbook.SendMail Recipients:="xxx@xxx.be"
Else
End If
If LCase(Sheets("Commande").Range("BC1").Value) Like "*elena*" Then
ActiveWorkbook.SendMail Recipients:="xxx@xxx.be"
Else
End If
MsgBox ("Commande validée (délai à respecter)")
Sheets("Feuil1").Range("VDX1000").Value = "" 'On invalide l'impression

strName = InputBox(Prompt:=" Entrer Votre Code", _
Title:="ACCES", Default:="")

If strName = "" Or _
strName = vbNullString Then
Exit Sub
Else
Select Case strName
Case "Yohan"

Sheets("Feuil1").Range("VDX1000").Value = "1" 'On valide l'impression.....

ActiveSheet.PageSetup.PrintArea = "$A$1:$H$53" 'ICI TA MACRO.....
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"

Case Is <> "Yohan"
CreateObject("Wscript.shell").Popup " ACCES REFUSE ", 1, " ERREUR", vbCritical
Exit Sub
End Select
End If

p = Sheets("Commande").Range("g4").Value
t = Sheets("Commande").Range("b4").Value
r = Sheets("Commande").Range("b4")
NomFeuil = Range("H5").Value
l = "H:\Gestion de production\Commande Archivage\" & p & Format(Date, "yyyy-mm-dd") & "_" & ".xlsm"

'mod i,j,k,y,z
y = Sheets("Commande").Range("g5").Value

Sheets("Commande").Range("Z1").Value = DateValue(Sheets("Commande").Range("G5").Value & " " & Sheets("Commande").Range("H5").Value)

e = Sheets("Commande").Range("Z1").Value

Workbooks.Open Filename:="\\Serveur\documents\GESTION DE PRODUCTION\Analyse\Analyse du système.xlsm", UpdateLinks:=0

For n = 1 To 10000
If Sheets("Informations").Range("B" & n) = r Then
Sheets("Informations").Range("E" & n) = e
Cells.Hyperlinks.Add Anchor:=Sheets("Informations").Range("A" & n), Address:=l, TextToDisplay _
:=p & t

End If
Next n
ActiveWorkbook.Save
ActiveWindow.Close

Workbooks.Open Filename:="H:\GESTION DE PRODUCTION\Planning.xlsm", UpdateLinks:=0

ActiveWorkbook.Sheets(NomFeuil).Select

Range("a1").Select
j = 1
For j = 1 To 31

If j = y Then
ActiveCell.Offset(0, 1).Select
j = 32

Else: ActiveCell.Offset(1, 0).Select
End If
Next j

z = 1

For z = 1 To 14
If ActiveCell.Value = "" Then
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
l, TextToDisplay _
:=p & t

z = 15
Else: ActiveCell.Offset(0, 1).Select

End If

Next z
Windows("Planning.xlsm").Activate
ActiveWorkbook.Save
ActiveWindow.Close


ThisWorkbook.Close savechanges:=False
Application.Quit
Else
End If
End Sub


Merci pour ton aide...

Yohan
 

xhudi69

XLDnaute Accro
Re : protégé un bouton

Bonsoir yohan, le Forum,
RE BONNE ANNEE 2013

Tu cumule plusieurs procédures en un seul bouton, pose toi la question suivante:
La personne qui appuie sur le bouton, est-elle abilitée à:
1)envoyer un mail ?
2) imprimer ?
Si la réponse est oui dans les deux cas, place l'appel à l'InputBox avec validation de l'impression au début de ta procédure et seulement là.
Autrement, sépare tes procédures en deux boutons avec dans chacune d'elles une partie de ta procédure.
De plus, pourquoi fait-tu une double validation d'impression, une ICI
Code:
MsgBox ("Commande validée (délai à respecter)")
 Sheets("Feuil1").Range("VDX1000").Value = "" 'On invalide l'impression
et une autre ICI un peu plus bas, ce n'était pas nécessaire de valider l'impression avant même que l'utilisateur saisisse son code :confused:
Code:
If strName = "" Or _
 strName = vbNullString Then
 Exit Sub
 Else
 Select Case strName
 Case "Yohan"

 Sheets("Feuil1").Range("VDX1000").Value = "1" 'On valide l'impression.....
sépare tes procédures ou place l'InputBox en tête.

@+
 

bode

XLDnaute Nouveau
Re : protégé un bouton

Salut à tous
Je reviens à l'objet de la question initiale de ce forum :
Protéger par mot de passe la macro qui suit le click d'un bouton.
Voila ma version qui explique tout au novices.
Merci xhudi69
A+
 

Pièces jointes

  • protege-un-bouton.xlsm
    22.2 KB · Affichages: 23

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 231
Membres
104 454
dernier inscrit
alaindeloin.1976