XL 2010 Un truc sympa pour les Combo

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'avais trouvé cer artifice je ne sais plus où. Je l'ai adapté sans strictement rien comprendre avec les "KeyCode". Mais ce n'est pas grave, ça marche !

1 ComboBox avec 2 options.
On choisit la seconde. Un deuxième ComboBox apparaît avec sa liste déployée. C'est tout.
 

Pièces jointes

  • ComboTruc.xlsm
    22.9 KB · Affichages: 96

Dudu2

XLDnaute Barbatruc
Bonjour à tous,

En effet on peut soit envoyer un CreateObject("wscript.shell").SendKeys "{F4}" soit, je le découvre avec @job75, déclencher la chose en asynchrone avec une Application.OnTime Now, Me.CodeName & ".Affiche".
Perso j'ai pris l'habitude d'envoyer le {F4} systématiquement pour faire un DropDown.

Les ComboBoxes ont des comportements particuliers:
- Sur le .DropDown quand on passe d'une ComboBox à une autre directement
- Lorsqu'on valorise la liste avec des valeurs numériques (il est préférable de toujours transformer en String)
(je crois que @Dranreb fait ça)
- Lorsqu'on .Clear la ComboBox avec une liste affichée, une liste "fantôme" reste présente.
 

Dudu2

XLDnaute Barbatruc
@patricktoulon,
Ok ça me rassure ;) .
Dans mon module de Saisie Assistée sur ComboBox j'avais noté:
VB:
ListePrésente = KeepCmb.ListCount > 0
If ListePrésente Then
    KeepCmb.Clear
               
    'Bug Excel ! La ComboBox laisse affichée une liste fantôme à faire disparaître !!!
    '4 solutions: envoyer {ENTER}, {ESCAPE}, {F10}{F10} ou un Clic Souris
    'La meilleure solution est le Clic Souris mais s'il existe une propriété ComboBox.CurX, ComboBox.CurY n'existe pas.
    'On ne peut donc pas positionner la souris dans la ComboBox pour y simuler un Clic Souris.
    'Pour éviter d'envoyer des touches plus susceptibles d'être interceptées par l'appelant via un ComboBox_KeyDown()
    'le plus neutre est d'envoyer 2 fois {F10}.
    CreateObject("wscript.shell").SendKeys "{F10}{F10}"
End If
 

Dudu2

XLDnaute Barbatruc
En fait c'est très variable.

Chez moi W7 et Excel 2016 (mais je crois que c'était pareil quand j'avais Office 2013), un SendKeys "Bonjour" éteint et rallume immédiatement le témoin de Num Lock.
Et si le témoin Num Lock est éteint avant, il reste éteint sans passer par le stade allumé.

Si je rajoute un Wait, SendKeys "Bonjour", True, cela éteint le témoin du Num Lock sans jamais le rallumer.

Par contre un Application.SendKeys "Bonjour" avec ou sans Wait, éteint toujours le témoin de Num Lock. Et comme ci-dessus, ne le rallume pas s'il est éteint au départ.

Par précaution, si on code pour autrui, il faut considérer que ces 2 versions de SendKeys ont un impact potentiel sur le Num Lock.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35