XL 2010 Class de ListBox déSélection Item Impossible

ChTi160

XLDnaute Barbatruc
Bonjour Le Forum

Je m'amuse à la construction d'un Agenda ,dont les périodes Horaires sont représentées par des ListBox à sélection (Unique ) de la Classe des ListBox (84) pouvant accueillir jusqu’à Quatre Rendez vous (1/4 d'heure).
la Sélection d'une des Lignes (Rendez vous) ,d'une des ListBox , de la Classe des ListBox me permet de récupérer les Infos de ce Rendez Vous.
Mais je n'arrive pas à supprimer la sélection de cette Ligne , comme visible sur la copie d'écran .
malgré les codes que j'ai essaye .
dont un exemple
VB:
Public Function NoSelectedRow(Ctrl As Control)
Dim temp
Application.EnableEvents = False
 With UsF_AGENDA
   With Ctrl 'est la ListBox ou la ligne a était sélectionnée
     temp = .ListIndex
                  .Selected(temp) = False 'Mais rien n'y fait
   End With
 End With
Application.EnableEvents = True
End Function

j'ai aussi testé la boucle sur les Items de la ListBox pour les désélectionner . (rien n'y fait)
Auriez vous une astuce ,Un code , pour que les Lignes sélectionnées dans mes ListBox ne le soient plus après récupération des Données?

Merci par avance
Amicalement
Jean marie
 

Pièces jointes

  • Select ListBox.jpg
    Select ListBox.jpg
    81 KB · Affichages: 30

Dranreb

XLDnaute Barbatruc
Bonjour.
VB:
Public Function NoSelectedRow(ByVal Ctrl As MSForms.ListBox) As Long
NoSelectedRow = Ctrl.ListIndex
Ctrl.ListIndex = -1
End Function
Remarque: si cette Function est en fait une propriété en lecture seul d'une classe dont Ctrl est une propriété, pas besoin de la transmettre en paramètre.
 

ChTi160

XLDnaute Barbatruc
Bonsoir Dranred
Bonsoir Le Fil ,Le Forum
Merci de t'intéresser à mon problème Lol.
je viens de tester ceci et ça ne change rien .
VB:
Private Sub GroupListBox_Click()
Dim Idx As Integer
With UsF_AGENDA
    With GroupListBox
        Idx = Mid(.Name, InStr(1, .Name, "_") + 1) 'Je recupére le Numero de La ListBox
              .ListIndex = -1
    End With
End With
End Sub

cela semble évident et pourtant je n'y arrive pas. Lol
y aurait il la possibilité qu'une référence ne soit pas activée et que cela est une influence sur cette Procédure ?
Dans l'attente
bonne fin de Soirée
Amicalement
Jean marie
 

ChTi160

XLDnaute Barbatruc
Oui
j'initialise cette propriété pour chaque ListBox de ma Class lors d'une boucle sur les 84 listBox
Merci de l’intérêt que tu portes a ma demande.
j'ai constaté la même chose pour une ListBox d'un Userform que j'ai créée spécialement pour tester ,que si je met un bouton et que la procédure de ce bouton est ListBox1.listIndex=-1 et bien la c'est bon plus de trace bleu dans la ListBox1 ???? je continue Lol
Bonne fin de Soirée
Amicalement
Jean marie
 

ChTi160

XLDnaute Barbatruc
Bonjour Dranreb
Bonjour Le Fil,Le Forum

un fichier minimisé qui reproduit mon problème .
1° Premier test on active la Ligne :
VB:
GroupListBox.ListIndex = -1
dans La Procédure
VB:
Private Sub GroupListBox_Click()
pas de suppression de la Trace Bleu mais Index mis à -1
2° Deuxième Test on désactive la Ligne :
VB:
GroupListBox.ListIndex = -1
dans La Procédure
VB:
Private Sub GroupListBox_Click()
On sélectionne un item de ListBox
puis on Click le Bouton "TEST"
qui contient la procédure :
VB:
Private Sub CmdB_TEST_Click()
Ctrl_LstB.ListIndex = -1 'Avec la ListBox source
End Sub
la ligne est bien mise en Blanc et L'index à -1
Dans l'Attente
Bonne fin de Journée
Amicalement
Jean marie
 

Pièces jointes

  • Test LIstBox Class.xlsm
    27 KB · Affichages: 20

ChTi160

XLDnaute Barbatruc
Re
Bonjour Bertrand
Merci de l’intérêt que tu portes à ma demande .
Si je comprends bien , tu créées une variable Listbox que tu initialises lors de la sélection d'une des Listbox de la class des Listbox et c'est lors du changement de Listbox que tu remets la première a -1
je vais tester .
Merci
Bonne fin de Journée
Amicalement
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
je viens de tester et c'est effectivement une possibilité , que je vais retenir Lol
Je ne comprends pas pourquoi , cette remise à -1 n’entraîne pas la remise en forme de la ListBox ?????
Merci je continue à me documenter sur le Sujet Lol
Bonne continuation
Amicalement
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Apres adaptation dans mon fichier , j'ai constaté que cela ne fonctionne pas , si je sélectionne une autre Ligne (Rendez vous) , mais dans la Même ListBox .
j'ai donc adapté la procédure ainsi :
VB:
Private Sub GroupListBox_Click()
Dim Ctrl As Control
Dim Idx As Integer
  Application.ScreenUpdating = False
    With GroupListBox 'avec la ListBox selectionnée
        Idx = Mid(.Name, InStr(1, .Name, "_") + 1) 'Je recupére le Numero de La ListBox
            If Idx <> Mid(Old_LstB.Name, InStr(1, Old_LstB.Name, "_") + 1) Then 'Je vérifie que la ListBox sélectionnée
'n'est pas la même que la Dernière Plusieurs Lignes (Max 4 Rendez vous par ListBox)
                          Old_LstB.ListIndex = -1 'si différente je mets à -1
            End If
    End With
          Set Old_LstB = GroupListBox 'Je récupére la ListBox sélectionnée
  Application.ScreenUpdating = True
End Sub
PS: j'ai oublié de dire que lors de ma Boucle d’initialisation de ma Class des Listbox
j'affecte une ListBox à Ma Variable Old_LstB (La dernière de la Boucle) pour éviter une erreur d'automation lors de la première sélection.

Encore merci
je continue LOL
Bonne fin de Journée
Amicalement
Jean marie
 
Dernière édition:

Si...

XLDnaute Barbatruc
Bonjour

Puisque c’était fait mais, ne sachant avec quel type de contrôles (ActiveX, ListBox d’Userform) tu travaillais, je donne mes 2 exemples.
 

Pièces jointes

  • ListBox (ActiveX) Module de classe.xlsm
    47.4 KB · Affichages: 27
  • ListBox (UsF) Module de classe.xlsm
    25.2 KB · Affichages: 37

Discussions similaires

Réponses
18
Affichages
505
Réponses
2
Affichages
129

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo