Rendre actif bouton VBA par mot de passe

Patrick -  
 Patrick -
Bonjour,

après avoir cherché pendant plus de 2h sur Google, je n'ai rien trouvé de très concluant pour mon problème. Je me permets donc de solliciter votre aide en espérant que vous pourrez trouver une solution.

Je viens de créer une base de données sur Excel en m'inspirant fortement de ce tuto: http://www.polykromy.com/blog/excel-base-de-donnees.htm

Tout fonctionne correctement. Je souhaiterais maintenant y apporter quelques modifications.

En effet, j'ai actuellement 6onglets (accueil, recherche, base de données, saisie, modifier, param)
Ma base de données devant être accessible à tous, je souhaiterais verrouiller par mot de passe certains onglets pour éviter toutes modifications (onglet saisie, modifier et le tableau de base de données)

Le soucis est que lorsque je verrouille classiquement chaque feuille excel par un mot de passe, toutes les cellules sont bien verrouillées mais les boutons VBA eux continuent à être actif (même en faisant click droit sur le bouton, protection, verrouiller)

Je voulais donc savoir s'il était possible par exemple, de créer deux boutons sur la page d'accueil (un verrouiller et un autre déverrouiller) qui lorsque l'on clique dessus rend inactif ou verrouille l'ensemble des boutons VBA présents sur les onglets en questions ainsi que les cellules et les rend actifs ou les déverrouille après avoir entrée le bon mot de passe.

Je vous remercie d'avance pour votre aide.
Cordialement,

Patrick

A voir également:

3 réponses

linkcr15 Messages postés 362 Date d'inscription   Statut Membre Dernière intervention   12
 
Et si tu mettais l'attribut Visible des boutons à False de base et quand tu entres le bon mot de passe, tu mette l'attribut à True pour les rendre visibles?
0
Patrick
 
L'inconvénient c'est qu'il faudra répéter l'action pour chaque onglet et bien penser à reverouiller chaque onglet après modification par un mot de passe.
A moins qu'il soit possible de faire ce que vous me proposez grâce à un bouton? Ce serait parfait comme solution :)
0
linkcr15 Messages postés 362 Date d'inscription   Statut Membre Dernière intervention   12
 
De toute façon tu n'as pas le choix, c'est soit la propriété Visible, soit la propriété Locked (mais tu as essayé déjà non?). De toute manière tu seras obligé d'ouvrir et de refermer tous tes onglets.
0
Patrick
 
Sinon, existe-t-il un bout de code qui permettrait de demander un mot de passe lorsque l'on clique sur le bouton avant de lancer la procédure?

Exemple:
pour supprimer une ligne de la base de données j'ai la procédure suivante procédure:

Sub supprimer()
'
' supprimer Macro
'

'
If MsgBox("Etes-vous sûr de vouloir supprimer ce fournisseur de la base de données?", vbYesNo, "Suppression") = vbYes Then
Sheets("Base de données").Rows([param_no_ligne] + 1).Delete Shift:=xlUp
If [nb_enregistrements_bd] < [param_no_ligne] Then [param_no_ligne] = [param_no_ligne] - 1
End If
Sheets("Modifier").Select
End Sub


Peut-on par exemple glisser un bout de code avant If MsgBox("Etes-v.... qui lorsque l'on clique sur le bouton Supprimer fait apparaître une boite de dialogue demandant un mot de passe qu'on aurait défini avant et qui lance la procédure uniquement si l'utilisateur entre le bon mot de passe... sinon un message d'erreur apparaît

En tout cas merci pour votre aide!
0
linkcr15 Messages postés 362 Date d'inscription   Statut Membre Dernière intervention   12
 
Ce que tu peux faire c'est en ouvrant ton fichier, faire un UserForm dans lequel tu demades un mot de passe. Et ensuite s'il donne un mauvais mot de passe, tu met tous les boutons en invisible, sinon tu ne fais rien (tu met l'attribut Visible des boutons à True à la basse comme ça, pas besoin d'y toucher).

Ton problème est que tu as plein de boutons, donc si tu veux demander un mot de passe pour chacun, il faut mettre le code dans chaque bouton.
Si c'est ce que tu veux faire, créer un UserForm où tu demandes un mot de passe et affiche le à chaque fois que tu veux que l'utilisateur entre un mot de passe (Attention, là il te faudra quelque chose du genre :

UserForm.Show
avec une condition d'arrêt si l'utilisateur entre un mauvais mot de passe.
0
Patrick
 
Autre possibilité dans la meme idée, se serait de créer un bouton à bascule.

Si le bouton est désactiver alors les bouton en question sont inactif (donc les mettre par défaut en invisible) si le bouton est activé alors les boutons sont actifs avec la condition pour activer le bouton a bascule, entrer un mot de passe...
ça me parait être la meilleure solution... seul Bémol c'est que je suis novice et je ne sais pas comment faire
0
Patrick
 
Merci pour votre aide!
J'ai pratiquement fini de mettre en place ma base de données grâce à votre aide.

J'ai une dernière petite question plus en rapport avec Excel.
Je souhaiterais créer un format de cellule qui regrouperait les chiffres d'un nombre rentré par 2.

Exemple: 123456789 = 12 34 56 78 9

Est-ce possible?
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour a vous tous

Sauf si je n'ai pas bien suivi......

Patrick - 7 juin 2012 à 14:34
Mon problème justement c'est que comme il s'agit de bouton formulaire, impossible de mettre une valeur true or false.


Si!

ex:
ActiveSheet.Shapes("Bouton 2").Visible = True '( visible )
ActiveSheet.Shapes("Bouton 2").Visible = False '( invisible )

Bonne suite
-2