Faire apparaître des boîtes de dialogue modales devant les classeurs (Microsoft Excel)
Don a tendance à travailler sur deux moniteurs et à ouvrir plusieurs classeurs sur la même instance d’Excel. Il maximise également ses fenêtres. (Il se décrit comme un type de type « tout voir en un seul coup ».) Récemment, lorsque Don a fait quelque chose qui ouvre une boîte de dialogue modale, la boîte s’ouvre derrière le classeur, ce qui l’empêche de voir la boîte de dialogue ou d’interagir avec il. Il se demande s’il existe un moyen de faire apparaître les boîtes de dialogue modales devant le classeur.
Avant de répondre, il convient de souligner que les boîtes de dialogue peuvent être de deux types: modales et non modales. Une boîte de dialogue non modale est une boîte de dialogue qui est pratiquement indépendante du programme auquel elle appartient. Un bon exemple d’une telle boîte de dialogue est la boîte de dialogue Rechercher et remplacer. D’autre part, une boîte de dialogue modale (celles avec lesquelles Don a des problèmes)
doit être répondu ou fermé avant de pouvoir continuer à travailler avec le programme auquel appartient la boîte de dialogue.
On ne sait pas si le problème de Don est avec les boîtes de dialogue modales générées par Excel lui-même ou si ce sont des boîtes de dialogue générées par des macros sur lesquelles Don a le contrôle. Si c’est le premier, alors il n’y a pas grand-chose à faire; l’emplacement en couches de la boîte de dialogue est entièrement contrôlé par le programme (et les programmeurs qui l’ont créé). En d’autres termes, il faudrait une modification du code pour que la boîte de dialogue apparaisse superposée au-dessus du classeur plutôt qu’en dessous.
Comprenez qu’il existe un scénario dans lequel le problème peut ne pas être dû à un problème de programmation Excel. Il se peut que vous ayez une application tierce exécutée sur le système qui affecte la superposition des boîtes de dialogue et de leurs fenêtres parentes. Les coupables typiques dans ce scénario sont les utilitaires résidant en mémoire qui se forcent à toujours apparaître au-dessus de tout ce qui se trouve à l’écran. La seule façon de voir si c’est le coupable est de désactiver le chargement de ces utilitaires et, dans Excel, d’afficher une boîte de dialogue modale. Si le comportement revient à la normale, vous connaissez alors la source du problème.
Si c’est le cas, cependant, que la boîte de dialogue est générée par une macro développée par Don alors la solution est d’ajuster le code qui génère la boîte de dialogue modale. (Dans les macros Excel, ces types de boîtes de dialogue sont généralement implémentés via des formulaires utilisateur.).
Le problème du placement du formulaire utilisateur dans plusieurs scénarios d’écran est résolu par le placement manuel du formulaire utilisateur dans son code de lancement. Par exemple, vous pouvez utiliser une variante à ce sujet:
Load UserForm1 UserForm1.StartUpPosition = 0 UserForm1.Top = Application.Top + 25 UserForm1.Left = Application.Left + 25 UserForm1.Show
Vous devrez peut-être expérimenter le placement, mais la définition de la propriété StartUpPosition sur 0 est requise pour que VBA sache que vous souhaitez localiser manuellement le formulaire utilisateur.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13349) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.