Listview éviter sélection par défaut
Bonjour,
J'utilise des listviews dans tous mes formulaires avec beaucoup de satisfaction. Néanmoins j'aimerai éliminer un petit détail :
L'affichage du listview sélectionne une ligne par défaut (le premier enregistrement de la table), et je voudrais l'éviter pour ne pas troubler l'opérateur. Je n'ai vu aucune propriété qui évite ce focus.
Cordialement
Daniel
Selection vs. focus dans une ListBox d'UserForm Excel VBA
Bonjour
1. Selection vs. focus d'un item d'une ListBox dans un UserForm
Citation:
Envoyé par
danisoaz
L'affichage du listview sélectionne une ligne par défaut (le premier enregistrement de la table)
J'ai créé un UserForm1 avec une ListBox1 (je n'ai pas de ListView par défaut) et le bouton "OK" CmdBtnOk.
Code:
1 2 3 4 5 6 7 8 9 10 11
| Option Explicit ' Selection vs. focus d'un item d'une ListBox dans un UserForm
Private Sub CmdBtnOk_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
With Me.ListBox1
.AddItem "Item1"
.AddItem "Item2"
' .ListIndex = 1 ' Sélectionne le second item
End With
End Sub |
Dans Module1, j'ouvre UserForm1 :
Code:
1 2 3 4
| Option Explicit ' Ouverture d'un UserForm
Sub ShowUserForm()
UserForm1.Show
End Sub |
Le premier Item1 de ListBox1 a le focus mais n'est pas sélectionné.
Pour forcer une sélection, il faudrait aujouter:
Code:
ListBox1.ListIndex = 1 ' Sélectionne le second item
Par défaut on a :
Code:
ListBox1.ListIndex = -1 ' Aucun item n'est sélectionné.
2. Donner le focus à un autre contrôle dès le design
Citation:
Envoyé par
danisoaz
évite ce focus.
Pour éviter le focus sur ListBox1, il faut mettre le focus sur un autre contrôle de UserForm1 qui sera le nouveau contrôle par défaut.
On peut le faire au moment de la conception de la forme sans rajouter de code d'initialisation en changeant l'ordre du focus à savoir la propriété TabIndex initialement à zéro si on a créé en premier ListBox1 puis CmdBtnOk.
En mode design, sélectionner le bouton "OK".
Dans les propriétés de CmdBtnOk, scroller jusqu'à TabIndex = 1
Forcer la valeur 0. Tous les autres contrôles seront renumérotés automatiquement.
Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE d'Excel, copier-coller et valider par ENTER :
Le bouton "OK" a le focus. Cela signifie que ListBox1 ne l'a plus.