Fermeture d’userform excel

chtiraoul

Nouveau membre
Merci de m’accueillir sur ce forum qui a l’air très enrichissant.
Est-ce qu’il vous serait possible de répondre à mon problème
Dans mes userforms sous excel 2003, je voudrai que la croix en haut à droite dans la barre de titre n’apparaisse pas afin d’obliger mes utilisateurs à fermer les userforms par des boutons valider ou annuler. Est-ce possible et si oui, comment ?
Merci d’avance à ceux qui pourront m’éclairer.
 

zeb

Modérateur
Non ce n'est pas possible. :o
(Ou alors au prix d'un effort que je ne me sens pas de t'accorder. Il est en effet possible de tout faire en VBA ;) )

Ce qui est en revanche possible, c'est d'utiliser l'événement QueryClose.

Par principe, je ne t'engage pas à empêcher l'utilisateur de fermer ta fenêtre mais plutôt à appeler le code du bouton Cancel dans la procédure événementielle UserForm_QueryClose.

J'espère que ce laïus aura été ... enrichissant :D
 

chtiraoul

Nouveau membre
GENIAL
J’ai créé une variable Boolean
Dans l’événement QueryClose, je donne cette valeur à l’argument Cancel
L’événement UserForm_Initialize lui donne la valeur True
Les événements click de mes boutons VALIDER et ANNULER lui donnent la valeur false

A la fermeture de mon Userform si ma variable est True, l’événement QueryClose affiche une MsgBox : Veuillez utiliser les boutons VALIDER ou ANNULER pour fermer la boite de dialogue.
Cà marche impeccable
Merci à toi
 

zeb

Modérateur
Ca marche, tant mieux.

C'est pourtant exactement ce que je te proposais de ne pas faire.
Une fenêtre, ça se ferme avec le bouton [Valider], le bouton [Annuler], le bouton [Ok], le bouton [X] ou les touches [Alt-F4] ([Ctrl-F4] pour les sous-fenêtres). C'est comme ça. Tu es en droit de violer cette règles [:spamafote]. La bonne façon de faire, c'est de créer une fonction de validation (Boutons Ok, Valider, etc) et une fonction d'annulation (Boutons Annuler, Quitter, X, touches de fermeture). Ces fonctions tu les as déjà. Ce sont tes fonctions BoutonValider_Click et BoutonAnnuler_Click (ou n'importe quoi d'autre en fonction du nom de tes boutons). Alors dans QueryClose, tu ne donnes pas de valeur à Cancel mais tu y appelles BoutonAnnuler_Click, c'est tout. :o
 

chtiraoul

Nouveau membre
Merci de tes conseils
Mon but est de créer une application de gestion d’horaires et de matériel pour une entreprise.
Elle sera utilisée par des gens très peu initiés à l’informatique.
Alors, je veux pas qu’il fassent de conneries. Toutes mes bases de données sur des feuilles excel sont masquées. J’ai créé mes commandbars personnalisées pour qu’ils ne puissent pas bidouiller avec les menus excel ou utiliser des raccourcis clavier Je veux qu’ils ne puissent manipuler tout çà que par des userforms, avec des listes de choix, des cases à cocher ou les autres contrôles et un minimum de saisie de texte dans des textbox. Pour l’instant, je me débrouille pas mal. Presque tout est protégé pour empêcher un non initié de faire des maladresses qui enverraient mes macros dans les choux. Il me restait à régler ce problème d’empêcher la fermeture des userform par cette satanée croix et de l’obliger à rester affichée si on clique dessus. Merci de m’avoir aidé.
Je vais donc essayer d’appeler BoutonAnnuler_Click dans QueryClose comme tu me le conseilles
 

zeb

Modérateur
Eh, eh ! Le non initié, c'est toi ;)

Un programme, avec satanée croix ou pas (N'est-ce pas un peu anti-clérical cette expression ?), doit pouvoir être utilisé par ma grand'mère. Donc c'est au concepteur du programme de tout blinder.

Par principe : Ne pas compter sur l'utilisateur, initié ou pas, pour ne pas cliquer là où ça conduirait dans les choux. :o

Donc la prise en compte de la croix, et aussi de la combinaison Alt-F4 doit être faite.

Indépendemment du VB (Vrai pour tous les langages événementiels sous tous OS), pour être orthodoxe (N'est-ce pas un peu pro-clérical cette expression ?), il faut mettre la gestion de sortie de fenêtre (Etes-vous sûr ?, sauvegarde, etc.) dans la procédure événementielle OnQueryClose. Et dans le code du bouton [Annuler], juste la fonction Close. Ce que je t'invite à faire :)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 059
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut