Listbox et listindex

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ckoebel5

XLDnaute Junior
Bonjour,

La question me semblait triviale, j'espère qu'elle le sera pour vous?

Je voudrais qu'une fois la procédure click sur ma listbox terminée, listindex soit égale à -1 afin que si je clique à nouveau sur le même item, le code soit à nouveau exécuté. J'ai donc mis cela à la fin de la procédure click (voir ci dessous). Sauf qu'une fois le code éxcuté, mon item reste bleu et donc listindex n'est pas égale à -1.

Quelqu'un en voit-il la raison? Y a t il une solution?

Merci et à bientôt!

Code:
Private Sub LBxSoutElv_Click()
Dim NombreSout As String, chaine As String, p As Integer, C As String
NombreSout = FSoutien.Columns(3).Find(what:=Left(LBxSoutElv.Value, Len(LBxSoutElv.Value) - 4)).Row - 1
If Len(NombreSout) = 1 Then NombreSout = "0" & NombreSout
chaine = FLstÉlv.[Soutiens].Rows(LÉlv).Value
p = InStr(chaine, NombreSout)
C = Mid$(chaine, p + 2, 1)
If Not C = "a" Then
        C = Chr$(Asc(C) - 1): Mid$(chaine, p + 2, 1) = C
        If C = "a" Then  
            FSoutien.Cells(NombreSout + 1, 4).Value = FSoutien.Cells(NombreSout + 1, 4).Value - 1
            If FSoutien.Cells(NombreSout + 1, 4).Value = 0 Then FSoutien.Cells(NombreSout + 1, 4).Value = ""
        End If
Else
        C = "c"
        Mid$(chaine, p + 2, 1) = C 
        FSoutien.Cells(NombreSout + 1, 4).Value = FSoutien.Cells(NombreSout + 1, 4).Value + 1
End If
FLstÉlv.[Soutiens].Rows(LÉlv) = chaine
ListerSoutiens (chaine)
Me.LBxSoutElv.ListIndex = -1
End Sub
 
Dernière édition:
Re : Listbox et listindex

Bonjour le forum!

Petite précisionpour mon message.

Lorsque je clique sur le premier item (listindex=0) du textbox, le code s'effectue normalement et à la fin j'ai bien listindex = -1.
Mais pour les autres items, le code s'effectue normalement mais la dernière ligne (listindex=-1) je ne sais pas pourquoi elle n'est pas "prise en compte" ou alors elle est contrecarrée par je ne sais quel processus....

Est il possible et comment faire pour qu'après un clique sur un item, celui-ci soit déselectionné c''est à dire listindex = -1?



Merci pour vos suggestions.

Cordialement.
 
Re : Listbox et listindex

Bonsoir,

Question pas si triviale que ça. A priori, en forçant ListIndex à -1, on n’obtient pas la suppression de la surbrillance sur la ligne précédemment sélectionnée.
Un palliatif : rafraichir la liste avec un clear puis un nouveau remplissage (solution bulldozer j’en conviens).

Cordialement.
 
Re : Listbox et listindex

Frangy, le Forum,

Merci pour ta réponse Frangy.
Un palliatif : rafraichir la liste avec un clear puis un nouveau remplissage (solution bulldozer j’en conviens).

Néanmoins, voici la procédure qu' est callée dans l'avant dernière ligne de la procédure click , cette procédure fait un clear de la listbox, et la remplie à nouveau. Pourtant je ne m'arrive pas à me défaire de cette surbrillance bleue après click.
Code:
Private Sub ListerSoutiens(chaine As String)
Dim p As Long
LBxSoutElv.ListIndex = -1
LBxSoutElv.Clear
For p = 1 To Len(chaine) - 2 Step 3
   LBxSoutElv.AddItem FSoutien.[ListSout].Rows(CLng(Mid$(chaine, p, 2)) + 1).Value & " (" & Mid$(chaine, p + 2, 1) & ")"
Next p
LBxSoutElv.ListIndex = -1
End Sub


J'en perd mon latin....

Quelqu'un a-t-il une idée?
 
Re : Listbox et listindex

frangy,

En fait le palliatif fonctionne uniquement lorsqu'il est appelé à l'extérieur de la procédure click (dans une autre procédure).

Mais je ne vois pas trop où le placer étant donné qu'il n'existe pas de procédure_afterclick.
 
Re : Listbox et listindex

Re,

Sans voir le fichier et n'ayant pas trop le temps de le construire ...........

peut-être en forçant le focus sur un autre élément présent sur l'USF, dans le but de quitter LBxSoutElv


par exemple (en fin de procédure)
............................
LBxSoutElv.Value=""
UserForm1.TextBox1.SetFocus
End Sub


il est peut-être nécessaire d'ajouter un TBox "fantôme" mais sa propriété .Visible doit être True
dans le cas ou l'affichage de celui-ci n'est pas le bienvenu, il suffit de le dimensionner à zéro en hauteur et zéro en largeur

à+
Philippe
 
Re : Listbox et listindex

Bonjour le Forum,

Phlaurent55, je viens de tester ta solution malheureusement sans le résultat escompté. Je vais finir par croire qu'il est impossible de réaliser un effacement de la surbrillance à l'intérieur de la procédure click de ladite listbox...

En attendant j'ai une non solution au problème... en passant par une procédure click à l'extérieur de la listbox afin de provoquer un clear et un nouveau remplissage (solution de frangy)... ça marche mais ça m'oblige à faire un click intermédiaire.

Merci pour ton aide!

Et si jamais quelqu'un voit une autre possibilité qu'il n'hésite pas ...

Cordialement,

ckoebel5
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
661
Réponses
5
Affichages
909
Réponses
15
Affichages
779
Retour