XL 2016 Boîte de dialogue

Lucio

XLDnaute Junior
Bonjour,
j'aimerais qu'une boîte de dialogue apparaisse à chaque fois que j'appuie sur un bouton de commande reset en demandant la confirmation du reset. Qui peut m'aider svp?
Et serait-ce possible que ca fonctionne quand la feuille est protégée?
Merci d'avance de votre aide.
 

JM27

XLDnaute Barbatruc
Bonjour
Comme je t'ai dit au post 9 , si tu mets un mot de passe il faut le gérer dans la macro.
ci joint un fichier avec un mot de passe : toto
qui te permets de faire un reset.
pour le mot de passe , il faut aller dans la Feuille MotDePasse qui est en VeryHidden en B2
pour le modifier :
- Impérativement Déprotéger la feuille permis travaux dangereux avec l'ancien mot de passe
- il faut changer la valeur de cette cellule B2 sur la feuille MotDePasse en B2
- Changer le mot de passe dans la macro TestMotDePasse
Impérativement dans cet ordre


Nota : il faudra aussi protéger ton projet VBA pour un mot de passe , sachant que sur excel
Tout mot de passe est facilement crackable.

Nota : les propositions des autres contributeurs sont aussi OK.
 

Pièces jointes

  • 2020 09 01 Permis de Travail COVID19 officiel.xlsm
    303.8 KB · Affichages: 9

Lucio

XLDnaute Junior
Bonjour
Comme je t'ai dit au post 9 , si tu mets un mot de passe il faut le gérer dans la macro.
ci joint un fichier avec un mot de passe : toto
qui te permets de faire un reset.
pour le mot de passe , il faut aller dans la Feuille MotDePasse qui est en VeryHidden en B2
pour le modifier :
- Impérativement Déprotéger la feuille permis travaux dangereux avec l'ancien mot de passe
- il faut changer la valeur de cette cellule B2 sur la feuille MotDePasse en B2
- Changer le mot de passe dans la macro TestMotDePasse
Impérativement dans cet ordre


Nota : il faudra aussi protéger ton projet VBA pour un mot de passe , sachant que sur excel
Tout mot de passe est facilement crackable.

Nota : les propositions des autres contributeurs sont aussi OK.
Merci bcp pour les astuces, c'est vraiment top. En fait, j'ai verrouillé des cellules dans le but de ne pas pouvoir modifier les descriptifs lors de la protection de la feuille. Certaines cellules ou je dois inscrire du texte ne sont pas verrouillées. Le problème que je rencontre c'est que quand je reset la feuille une boite de dialogue "erreur exécution 1004" s'affiche, Est-ce normal' il y a t'il une possibilité pour ne plus avoir ce bog?
Par contre quand la feuille n'est pas protégée ca fonctionne bien...
 

JM27

XLDnaute Barbatruc
Bonjour
Sur quel fichier
Quand ?
Comment ?
En faisant quoi ?
c'est que quand je reset la feuille une boite de dialogue "erreur exécution 1004" s'affiche, Est-ce normal' il y a t'il une possibilité pour ne plus avoir ce bog?
Cela ne veut rien dire : impossible de t'aider , je pense que tu ne donnes pas le bon fichier.
 

JM27

XLDnaute Barbatruc
bonsoir
le code de ton fichier

VB:
Private Sub CommandButton1_Click()
    If MsgBox("Voulez vous vraiment faire un RESET de la page?", vbYesNo + vbInformation) = vbYes Then
        For Each Elem In Me.Shapes
            If TypeName(Elem.OLEFormat.Object) = "CheckBox" Then
                Elem.OLEFormat.Object.Value = False
             ElseIf TypeName(Elem.OLEFormat.Object) = "OLEObject" Then
            If Elem.OLEFormat.progID Like "*CheckBox*" _
            Then Elem.OLEFormat.Object.Object.Value = False
        End If
        Next
        For Each Adr In Split("D38,D23,J23,E1,E9,E10,G5,G6,G7,G26,P5,P6,P7,M8,N19,I26,Q26,S26,O31,O38,R12,R26,S31,H44,E45,R45,G51,O51,D53,H54,H51,P53,P54,C57,I58,F59,G63,H64,P63,P64", ",")
        Me.Range(Adr) = vbNullString
        Next
 
    End If
End Sub

Le code du mien
Code:
Private Sub CommandButton1_Click()

    If MsgBox("Voulez vous vraiment faire une RAZ", vbYesNo + vbInformation) = vbYes Then
        Me.Unprotect     'Motdepasse si existe
        For Each Elem In Me.Shapes
            If TypeName(Elem.OLEFormat.Object) = "CheckBox" Then
                Elem.OLEFormat.Object.Value = False
            ElseIf TypeName(Elem.OLEFormat.Object) = "OLEObject" Then
                If Elem.OLEFormat.progID Like "*CheckBox*" _
                Then Elem.OLEFormat.Object.Object.Value = False
            End If
        Next
        For Each Adr In Split("D38,D23,J23,E1,E9,E10,G5,G6,G7,G26,P5,P6,P7,M8,N19,I26,Q26,S26,O31,O38,R12,R26,S31,H44,E45,R45,G51,O51,D53,H54,H51,P53,P54,C57,I58,F59,G63,H64,P63,P64", ",")
            Me.Range(Adr) = vbNullString
        Next
    Me.Protect     'Motdepasse si existe
    End If
End Sub

cherchez l'erreur !!!:p
une info : tu as supprimé deux lignes !!!! ( ceci expliquant cela !)
Si tu fais des modifs avant de comprendre les lignes de programme , cela ne va pas le faire ;)
pour info : tous les fichiers que l'on t'as fourni fonctionnaient !!!
 
Dernière édition:

Lucio

XLDnaute Junior
bonsoir
le code de ton fichier

VB:
Private Sub CommandButton1_Click()
    If MsgBox("Voulez vous vraiment faire un RESET de la page?", vbYesNo + vbInformation) = vbYes Then
        For Each Elem In Me.Shapes
            If TypeName(Elem.OLEFormat.Object) = "CheckBox" Then
                Elem.OLEFormat.Object.Value = False
             ElseIf TypeName(Elem.OLEFormat.Object) = "OLEObject" Then
            If Elem.OLEFormat.progID Like "*CheckBox*" _
            Then Elem.OLEFormat.Object.Object.Value = False
        End If
        Next
        For Each Adr In Split("D38,D23,J23,E1,E9,E10,G5,G6,G7,G26,P5,P6,P7,M8,N19,I26,Q26,S26,O31,O38,R12,R26,S31,H44,E45,R45,G51,O51,D53,H54,H51,P53,P54,C57,I58,F59,G63,H64,P63,P64", ",")
        Me.Range(Adr) = vbNullString
        Next
 
    End If
End Sub

Le code du mien
Code:
Private Sub CommandButton1_Click()

    If MsgBox("Voulez vous vraiment faire une RAZ", vbYesNo + vbInformation) = vbYes Then
        Me.Unprotect     'Motdepasse si existe
        For Each Elem In Me.Shapes
            If TypeName(Elem.OLEFormat.Object) = "CheckBox" Then
                Elem.OLEFormat.Object.Value = False
            ElseIf TypeName(Elem.OLEFormat.Object) = "OLEObject" Then
                If Elem.OLEFormat.progID Like "*CheckBox*" _
                Then Elem.OLEFormat.Object.Object.Value = False
            End If
        Next
        For Each Adr In Split("D38,D23,J23,E1,E9,E10,G5,G6,G7,G26,P5,P6,P7,M8,N19,I26,Q26,S26,O31,O38,R12,R26,S31,H44,E45,R45,G51,O51,D53,H54,H51,P53,P54,C57,I58,F59,G63,H64,P63,P64", ",")
            Me.Range(Adr) = vbNullString
        Next
    Me.Protect     'Motdepasse si existe
    End If
End Sub

cherchez l'erreur !!!:p
une info : tu as supprimé deux lignes !!!! ( ceci expliquant cela !)
Si tu fais des modifs avant de comprendre les lignes de programme , cela ne va pas le faire ;)
pour info : tous les fichiers que l'on t'as fourni fonctionnaient !!!
En effet ! Merci bcp
 

Discussions similaires

Réponses
9
Affichages
117
Réponses
5
Affichages
367
Compte Supprimé 979
C

Statistiques des forums

Discussions
311 723
Messages
2 081 934
Membres
101 844
dernier inscrit
pktla