Bonjour,
Dans une feuille j'ai une listBox avec pas mal d'enregistrements.
Ce que je voudrais c'est que tant que faire se peut (c'est à dire tant que je ne suis pas en tout début de liste ou en fin), la ligne sélectionnée soit toujours au milieu de la Listbox affichée.
Ma Listbox affiche 18 valeurs, je considère donc que le milieu est au 9ieme élément.
Pour ce qui est de quand j'utilise les flèches, ça marche avec ce code là:
Mais je voudrais aussi que cela fonctionne sur un clic dans la liste, j'ai donc mis ce code là:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub ListBoxNomEC_Keyup(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) ' Force la ligne sélectionnée de la ListBoxNomEC à rester le plus possible au millieu de la listbox If Abs(Me.ListBoxNomEC.ListIndex - Me.ListBoxNomEC.TopIndex) > 9 Or (Abs(Me.ListBoxNomEC.ListIndex - Me.ListBoxNomEC.TopIndex) < 9 And Me.ListBoxNomEC.ListIndex >= 9) Then Me.ListBoxNomEC.TopIndex = Me.ListBoxNomEC.ListIndex - 9 End If End Sub
Ça marche presque, sauf qu'après le passage dans ce module, la sélection se déplace sur l'endroit où j'ai cliqué au lieu de rester sur la ligne que je viens de placer au milieu de la liste (j'ai pourtant le temps de voir que la sélection se déplace bien à un moment donné sur la ligne que je viens de mettre au centre)....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub ListBoxNomEC_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Select Case Button Case 1 ' Si click gauche centrage de la sélection ListBoxNomEC.Selected(ListBoxNomEC.ListIndex) = True ListBoxNomEC.TopIndex = Me.ListBoxNomEC.ListIndex - 9 Case 2 ' Si clic droit, appel du formulaire de recherche UserFormRecherche.Show Case Else Exit Sub End Select End Sub
C'est comme si après avoir passé dans la MouseUp, il se passait encore quelque chose.
J'ai essayé de déplacer le code dans le Listbox.clic, même punition, ça marche un pouillème de temps puis la sélection se déplace là ou j'ai cliqué.
J'ai comme l'impression qu'il faudrait bloquer/inhiber un événement qui se produit après mon code, mais je ne vois pas lequel?
Si quelqu'un a une idée, je suis preneur.
PS: quand ça va marcher je sécuriserai la gestion de l'index pour ne pas avoir de problème en fin/début de liste comme fait dans le KeyUp.
Merci d'avance de vos réponses.
Partager