Interdire navgation entre classeurs Excel

  • Initiateur de la discussion Initiateur de la discussion yeti_yeti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Y

yeti_yeti

Guest
Bonjour,

J'ai un gros code VBA qui marche parfaitement bien tant que l'on reste sur le classeur dans lequel il est écrit.

Malheureusement, si un utilisateur active la macro (Userform) et qu'il va dans un autre classeur (pour rechercher une information par exemple) et qu'il oublie de revenir dans le bon classeur et appuie sur un bouton qui effectue une action, une magnifique erreur apparaît.

Je voulais savoir s'il était possible (certainement) et comment faire pour que, dès lors que la macro est enclenchée, la navigation entre classeur Excel soit impossible?

Merci de votre aide

A bientôt

YeTi
 
Re : Interdire navgation entre classeurs Excel

Je n'ai pas d'explications à ça, mais je te garantis que l'utilisateur arrive a effectuer des actions dans le classeur ou est contenu la macro ainsi que dans n'importe quel autre classeur alors que l'UserForm est en marche...

Serait-ce dû au fait que l'UserForm s'ouvre en vbModeless?
 
Re : Interdire navgation entre classeurs Excel

En fait c'est bien ça, c'est le vbModeless qui fait que je peux aller dans un autre classeur alors que l'UserForm est en marche.

Le problème c'est que j'ai besoin de cette condition vbModeless car j'ai 3 UserForm qui se superposent par moment et qui ensuite disparaissent. J'ai testé sans vbModeless, ils ne disparaissent pas lorsque je le veux (obligé de cliquer sur la croix pour fermer le UserForm).

Y a-t-il donc un moyen pour garder le vbModeless et emêcher la navigation entre les classeurs? Ou y a-t-il un moyen de faire marcher ces 3 UserForm sans vbModeless?

Merci de votre aide

YeTi
 
Re : Interdire navgation entre classeurs Excel

Bonjour,

D'accord, vbModeless ou simplement 0.

Un exemple ci-joint avec cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_Deactivate()
Dim u As Object
For Each u In UserForms
If u.Name = "UserForm1" Then ThisWorkbook.Activate 'tant que UserForm1 est chargé
Next
End Sub

Tant que UserForm1 est chargé, la navigation entre classeurs est impossible.

Edit : si l'on veut empêcher la navigation quel que soit l'UserForm, écrire dans la boucle (sans test) :

ThisWorkbook.Activate

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour