Microsoft 365 ComboBox ne pas sortir si clic hors sélection dans la list

Usine à gaz

XLDnaute Barbatruc
Bonsoir à toutes et à tous :)

Quand on "lance " un UserForm" le choix modal ou non modal est possible :
Mon_UserForm.Show
modal :
Par défaut, un UserForm est "modal" ce qui implique que vous ne pouvez pas travailler sur une feuille tant que l'UserForm est ouvert.
Mon_UserForm.Show 0
non modal :
En mode "non modal", vous pouvez travailler sur une feuille tout en ayant un UserForm ouvert. Pour cela, ajoutez un "0" à l'ouverture.

Voici ma question
Dans mon fichier, j'ai un ComboBox mais sans UserForm :
Quand il est ouvert, est-il possible de bloquer la feuille comme pour "Mon_UserForm.Show" = modal ?

Jusqu'à maintenant, je n'ai pas trouvé.
Auriez-vous une solution ?
Merci à tous,
lionel :)
 
Solution
Bonjour Lionel, le forum,

Ton problème c'est que tu bricoles les codes qu'on te donne et après ils ne tiennent plus la route.

Ton test avec la cellule P1 est bien maladroit alors qu'il suffit de tester "MaCell".

Les macros Worksheet_Activate en Feuil1 et Feuil2 sont totalement inutiles puisque la macro "Affiche" renvoie toujours sur la feuille "Gérard".

Et la macro "désactive_alphabet' est vraiment sans intérêt puisqu'on peut entrer des chiffres ou d'autres caractères, il vaut mieux protéger la feuille, je l'ai fait avec le mot de passe toto.

Utilise donc ce fichier (6).

A+

job75

XLDnaute Barbatruc
Bonjour à tous,

Je ne connaissais pas non plus Application.Interactive.

J'aurais mis bêtement dans le code de la feuille :
VB:
Private Sub ComboBox1_LostFocus()
ComboBox1.Activate
End Sub
ou :
Code:
Private Sub ComboBox1_LostFocus()
If ComboBox1.ListIndex = -1 Then ComboBox1.Activate
End Sub
A+
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Job75

Bonjour à tous,

Je ne connaissais pas non plus Application.Interactive.

J'aurais mis bêtement dans le code de la feuille :
VB:
VB:
Private Sub ComboBox1_LostFocus()
ComboBox1.Activate
End Sub
ou :
Code:
Code:
Private Sub ComboBox1_LostFocus()
If ComboBox1.ListIndex = -1 Then ComboBox1.Activate
End Sub
marchera pas sans référencer la cellule active à l'activation de la combobox pour appliquer les changements sur la bonne cellule car sinon la combobox reste affichée mais la cellule active a changé.

Bonne journée
Bien cordialement, @+
 

job75

XLDnaute Barbatruc
marchera pas sans référencer la cellule active à l'activation de la combobox pour appliquer les changements sur la bonne cellule car sinon la combobox reste affichée mais la cellule active a changé.
On utilisera plutôt la propriété LinkedCell.

Mais surtout les macros du post #20 bouclent sans fin quand on essaie de fermer le fichier.

Il faut quitter Excel par le Gestionnaire des tâches...
 

job75

XLDnaute Barbatruc
@Lionel je ne pense pas que ce soit une bonne idée de bloquer la ComboBox.

Il faut que l'utilisateur puisse la quitter s'il en a envie, par exemple avec une LostFocus :
VB:
Private Sub Combo1_LostFocus()
Combo1.Visible = False
End Sub
Le focus est donné à la ComboBox lors du double-clic, vois le fichier joint.
 

Pièces jointes

  • Test-2.xlsm
    33.2 KB · Affichages: 5

Dudu2

XLDnaute Barbatruc
output.gif
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
re,
le code "Application.Interactive" bloque trop souvent le fichier
ça bloque le fichier si tu bascules sur visual basic ouvert alors que la liste est affichée, car la liste se ferme alors sans déclencher le combo1_change et le application.interactive = true, pas vraiment ce que pourra faire un simple utilisateur du fichier.
et tu peux inclure une macro à lancer depuis VBE pour le rétablir quand cela t'arrive ce qui t'évitera de passer par le gestionnaire des taches
VB:
Sub app_inter_true()
Application.Interactive = True
End Sub
 

Usine à gaz

XLDnaute Barbatruc
@Lionel je ne pense pas que ce soit une bonne idée de bloquer la ComboBox.

Il faut que l'utilisateur puisse la quitter s'il en a envie, par exemple avec une LostFocus :
VB:
Private Sub Combo1_LostFocus()
Combo1.Visible = False
End Sub
Le focus est donné à la ComboBox lors du double-clic, vois le fichier joint.
Re-Gérard : j'aime bien cette solution ... je vais voir,
Et encore MERCI :)
 

Discussions similaires

Statistiques des forums

Discussions
314 630
Messages
2 111 381
Membres
111 118
dernier inscrit
gmc