Effectivement, c'est très bizarre ce comportement. J'ai du mal à comprendre pourquoi le msgbox s'affiche 4 fois.
Pourrais tu nous expliquer ce que tu veux faire au final ?
Je viens d'essayer d'analyser un peu le comportement du Listbox et je dois dire que l'évenement Listbox_Click est bizarre.
En effet, si je crée un bouton qui se contente de sélectionner un item dans le listbox et que je clic dessus, l'évenement Listbox_Cick se déclenche. On dirait qu'il ne se déclenche pas uniquement lors d'un vrai clic sur le listbox mais plutôt lors de la sélection d'un item dans le listbox.
Ce qui explique pourquoi ton msgbox s'affiche en boucle.
Ne pourrais tu pas utiliser un autre évenement ?
Je comprend pas bien l'intérêt de sélectionner un élément fixe dans un listbox à chaque fois que l'utilisateur clic sur dessus.
Je viens également de remarquer qu'une fois que l'évenement Listbox_Click a été déclenché, il est impossible de faire sélectionner une autre ligne par une procédure extérieur au listbox. De plus en plus bizarre cette histoire.
Le but est de sélectionner un élement sur un numéro, sinon, on peut écrire dans une cellule le numéro que l'on souhaite voir, mais bon, je pensais que c'était plus simple
et en changeant l'évènement (pour éviter des appels récursifs) ,
Code:
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ActiveSheet.ListBox1.ListIndex = 25
MsgBox ListBox1
End Sub
Je vois pas ce que tu veux dire par là. On ne peut pas parler de sélection si au final c'est toujours l'élement X qui est sélectionné. L'utilisateur choisi le numéro de l'élément qu'il veut voir sélectionner dans le listbox ?
Si c'est le cas :
- soit il le sélectionne dans le listbox et puis c'est tout
- soit il le saisi dans une cellule et on se sert de l'évenement Worksheet_SelectionChange pour sélectionner automatiquement la valeur correspondante dans le listbox
Merci Jean-Marcel, j'ai fait cela sur le right click:
Code:
Private Sub ListBox1_GotFocus()
ActiveSheet.ListBox1.ListIndex = 25
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
ActiveSheet.ListBox1.Activate
End Sub
Merci Forum...
Code:
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
ActiveSheet.ListBox1.ListIndex = 25
MsgBox ListBox1
End Sub
Mais si je laisse le msgbox, cela fonctionne, mais si je le retire et que je clique sur le listbox, cela ne me sélectionne pas le 26 ème élément.
Merci à tous, mais, bon c'est quand même pas simple la programmation évènementielle