Lancer une macro à partir d'un choix

Bonsoir,

Ceux qui "me suivent" savent que je m'occupe d'un tableur d'une amicale (mis au point grâce à vos aides).

Je viens de le refondre pour avoir une page d'accueil qui selon un choix (avec un mot de passe) affiche les onglets autorisés.

Cela fonctionne super bien.

J'aimerais exécuter la macro "Affichage_Secretaire" automatiquement (la macro est créé) lorsque le choix est Secrétaire....

Tout est repris dans le tableur.

Il y a également 2 autres points concernant "à la fermeture" et "à l'ouverture" du classeur...

Excellente soirée

Tonthon

Bonjour

Il sera difficile de te proposer quelque chose si tu n'indiques pas le mot de passe...

Bye !

Bonsoir,

Je suis désolé mais j'aurais dû indiquer que pour moi mdp voulait dire "mot de passe" cf lignes 23 &23

En résumé, le mdp pour l'affichage des choix est "adm" et pour ôter les protecteurs sur les feuilles "avl"

Cordialement

Un essai à tester.

Pour le verrouillage des cellules à la fermeture, j'avoue ne pas avoir eu envie de chercher de quelles cellule il s'agissait.

Bye !

Bonjour,

L'essai est

Sauf erreur, il "suffisait" d'ajouter Call Affichage_Secretaire en bas du choix 7 correspondant à Secrétaire.

J'aurais dû le trouver tout seul... maintenant c'est enregistré.

En ce qui concerne à la fermeture du Fichier Maître :

je recherche que toutes les cellules soient verrouillées ou si tu préfères l'ensemble de l'onglet.... je ne sais pas si c'est possible via un before_close sur ce fichier qui sélectionnerait toute la feuille, verrouillerait toutes les cellules et qui remetrait le mdp "avl"

Existe-t-il une meilleure solution ? Il y a peut-être encore plus simple ?

Excellente journée.

RE,

Il me semble avoir trouvé vu une solution sur ce forum mais j'ai perdu le fil .

De mémoire, c'est un code dans ThisWorkBook... Sheets("Fichier Maître").Activate ?

puis un before_close.... call "Verrouiller_toutes_les_cellules" que je viens de créer

Quelqu'un pourrait me mettre cela en musique ?

S'il y a une autre solution plus simple.... je suis preneur

Cordialement

Bonjour

Es-tu bien sûr que tu veuilles verrouiller toutes les cellules ?

Si oui, l’instruction est :

Cells.Locked = True

Mais en général, il suffit de protéger la feuille, et l’instruction est :

ActiveSheet.Protect "mdp"

Fais ton choix et mets l’instruction choisie juste avant celle qui masque la feuille.

Pour déprotéger l’instruction sera :

ActiveSheet.Unprotect "mdp"
gmb a écrit :

Bonjour

Es-tu bien sûr que tu veuilles verrouiller toutes les cellules ?

Oui mais uniquement du Fichier Maître juste avant sa fermeture....si c'est possible, je suis preneur du code.

Ceci dit, lancer une macro à l'ouverture d'un onglet -je sais faire maintenant -(comme tu m'as indiqué : un Call à la fin d'un choix)

il me reste à apprendre comment lancer une macro juste avant la fermeture d'un fichier désigné (et non du classeur)

Si tu peux m'indiquer cette solution, j'aurais toute liberté de refaire des macros selon les choix du départ.

Merci d'avance pour ton aide

Tu écris :

juste avant la fermeture d'un fichier désigné (et non du classeur)

Désolé mais là, je ne comprends pas. Pour moi, "fichier" et "classeur" sont des synonymes. Quelle différence fais-tu ?

Bye !

gmb a écrit :

Tu écris :

juste avant la fermeture d'un fichier désigné (et non du classeur)

Désolé mais là, je ne comprends pas. Pour moi, "fichier" et "classeur" sont des synonymes. Quelle différence fais-tu ?

Bye !

Chacun a son jargon.... pour moi le classeur c'est l'ensemble des onglets (feuilles) et quand je parle de fichier mais je me suis mal exprimé c'est une feuille ou un onglet....

Donc en clair, pour parler du cas précis... c'est le verrouillage de l'ensemble des cellules de la feuille ou onglet Fichier Maître et non de toutes les feuilles (onglets)

Plus que j'y pense, la possibilité de lancer une macro à la fermeture d'une feuille sera plus simple..... mais s'il existe un code je comparerai

Cordialement

OK, une feuille et un onglet sont bien synonymes, sauf que ce n'est pas mon jargon, c'est celui le plus communément adopté.

Passons...

Pour revenir à ton problème, si tu veux appliquer un verrouillage de toutes les cellules d'une feuille, la ''Feuil1" par exemple, il te suffit d'écrire :

Sheets("Feuil1").Cells.Locked = True

Mais, comme tu écris :

lancer une macro à la fermeture d'une feuille sera plus simple

Je te dirai que une feuille ne se ferme pas, au contraire d’un fichier.

Une feuille se désactive quand on clique sur l’onglet d’une autre feuillle, par exemple. Je suppose que c’est ce que tu as voulu dire ?

Alors, si tu veux verrouiller les cellules d’une feuille chaque fois que tu actives une autre feuille, il te faut mettre cette macro dans la feuille VBA de cette feuille (clic droit sur son onglet et choisir ‘’Visualiser le code’’) :

Private Sub Worksheet_Deactivate()
        Cells.Locked = True
End Sub

OK ?

Bye !

Bonjour gmb

Je reconnais bien volontiers d'avoir pris des mauvaises habitudes concernant la désignation de classeur/feuille/onglet et je te remercie sincèrement de me l'avoir fait remarquer.... aucun souci, je les retiens comme des remarques constructives.

Tu as bien saisi mes demandes.... et effectivement c'est le dernier code qu'il faut retenir.... j'essaie de bien le dire

il permet en quittant la feuille dans laquelle se trouve ce code de verrouiller toutes les cellules

Bien entendu, je l'ai testé et il fonctionne bien mais à partir d'une feuille non protégée.....

comme la feuille "Fichier unique" est partiellement verrouillée + protection par mdp*

il faut sauf erreur de ma part avoir un code genre =

  • ôter la protection via le mdp
  • avoir ce code qui verrouille toutes les cellules
  • re-protéger la feuille avec le mdp.... sinon les cellules restent accessibles !

et là, tout sera nickel-chrome.

Excellente journée

* pour ne laisser que certaines cellules accessibles au Secrétaire par exemple

Bonjour

Tonthon a écrit :

avoir un code genre =

  • ôter la protection via le mdp
  • avoir ce code qui verrouille toutes les cellules
  • re-protéger la feuille avec le mdp.... sinon les cellules restent accessibles !
OK. Les trois instructions correspondantes sont :
    Sheets("Feuil1").Unprotect "mdp"
    Sheets("Feuil1").Cells.Locked = True
    Sheets("Feuil1").Protect "mdp"

Bye !

Bonjour

Bravo, c'est clair

Mes soucis immédiats étant résolus, je clos ce post.

Merci pour tout.... en attendant de nouvelles interrogations qui apparaissent généralement avec la mise en route d'un nouveau classeur (c'est bien dit cette fois ci ? )

Cordialement

Tonthon

Rechercher des sujets similaires à "lancer macro partir choix"