Déselectionner item à l'initialisation d'une ListBox

Bonjour à tous!

Je rencontre une difficulté avec une listBox multiselection d'un userform qui apparait via un bouton sur un de mes onglets. A l'ouverture de mon classeur Excel et de mon Userform, des éléments de la listbox restent sélectionnés et je ne sais pas pourquoi. Pouvez-vous m'expliquer pourquoi?

J'ai donc cherché une solution à ce problème. J'ai créé un bouton supplémentaire sur mon Userform avec le code suivant :

Private Sub CommandButton1_Click()
Dim i As Integer

    For i = 0 To Me.ListBox1.ListCount
        Me.ListBox1.Selected(i) = False
    Next i
End Sub

Cela me permet de déselectionner tous les items de ma listBox, cependant j'aimerais me passer d'un bouton. Est-ce qu'il est possible d'insérer ce code dans l'initialisation de mon userform dont le code est le suivant :

Private Sub UserForm_Initialize()
Dim DerCell, i, J As Long
Dim wsDU1 As Worksheet
Dim r As Integer

  Set wsDU1 = Sheets("Document Unique")
  With Me.ListBox1
    .ColumnCount = 2
    .ColumnWidths = "50;80"
    'Récupère la derniere ligne non vide dans la colonne G
   DerCell = wsDU1.Range("G65536").End(xlUp).Row
    'Boucle sur les cellules de la colonne G
   For i = 4 To DerCell
      For J = 0 To .ListCount - 1
    's'il y a doublon passe a la ligne suivante
       If .List(J, 0) = wsDU1.Range("G" & i) Then Exit For
      Next J
      If J > .ListCount - 1 Then
    'ajoute dans ListBox1 colonne 1
       .AddItem wsDU1.Range("G" & i)
    'ajoute dans ListBox1 colonne 2
       .List(.ListCount - 1, 1) = wsDU1.Cells(i, 8)
      End If
    Next i
  End With

End Sub

Mes différents essais ne produisent aucun résultat...

Un merci d'avance à celle ou celui qui pourra m'aiguiller.

Bonne journée.

Bonjour,

ce serait bien de voir le fichier... sinon en mettant le code de ton bouton dans la Private sub Initialize et ce, juste avant set WSDU1...

ou alors essaie ceci en début de code et à placer jsute avant SET WSUD1

With ListBox1
    .MultiSelect = fmMultiSelectSingle
    .Clear
End with

Crdlt

Bonjour Dan,

Je te remercie pour le temps consacré à la résolution de mon problème, malheureusement il persiste après modification

Je propose mon fichier en pièce jointe ainsi qu'un imprime écran pour illustrer la chose à l'ouverture de l'userform (les 2 même UF sont sytématiquement sélectionnées).

439listbox.xlsm (272.72 Ko)

Encore merci,

Bonne journée

Re

Ton souci vient de cette instruction --> UserForm_UF.hide qui cache l'USF au lieu de la décharger

Soit tu mets ces instructions juste avant le UserForm_UF.hide

For i = 0 To Me.ListBox1.ListCount
     Me.ListBox1.Selected(i) = False
Next i

ou tu remplaces :

UserForm_UF.hide

par

Unload UserForm_UF

Amicalement

Re,

En effet le .hide m'avait échappé, par contre je viens de tester les 2 méthodes et malheureusement toujours le même problème

En complément :

J'ai vidé le presse papier, pensant que ca pouvait jouer = sans résultat

J'ai également supprimé les fichiers temporaires Excel de mon profile dans le dossier Application Data = sans résultat...

Je ne comprends vraiment pas

Dans tous les cas merci pour ton aide

re

Explique alors pas à pas ce que tu fais que je reproduise exactement ce que tu vois

Crdlt

Re,

J'ouvre mon fichier Excel directement via double-clic. Je me rends dans developpeur visual basic.

J'ouvre mon userform puis double-clique sur le bouton "valider" pour accéder au code.

Je copie le morceau de code proposé puis le colle au dessus de UserForm_UF.hide celui ci :

For i = 0 To Me.ListBox1.ListCount
     Me.ListBox1.Selected(i) = False
Next i
UserForm_UF.hide

Egalement testé :

Remplacé uniquement

UserForm_UF.hide 

par

Unload UserForm_UF

Egalement testé :

For i = 0 To Me.ListBox1.ListCount
     Me.ListBox1.Selected(i) = False
Next i
Unload UserForm_UF

J'ai également tenté de remplacer "i" par "k" sans oublier de déclarer ma variable en Integer car j'avais déjà "I" de déclaré.

J'enregistre et reviens à ma page d'accueil Excel, réalise un premier test (les items sont sélectionnés), je les déselectionne manuellement puis je sélectionne un item au hasard, je Valide.

Cette validation filtre une colonne sur un autre onglet, je défiltre manuellement, reviens sur ma page d'accueil puis enregistre.

Je ferme le fichier puis le réouvre pour tester et malheureusement les 2 sélections sont toujours présentes au lancement de mon Userform par le bouton de ma page d'accueil.

N'hésite pas si besoin d'info supplémentaire

Bonne soirée

re

e ferme le fichier puis le réouvre pour tester et malheureusement les 2 sélections sont toujours présentes au lancement de mon Userform par le bouton de ma page d'accueil.

Impossible cela si tu fermes ton fichier.

Si tu mets UNLOAD Userform_UF, il ne fait pas utiliser la boucle For i =0....

procédure suivie

  • Sur page d'accueil, clique sur le bouton Orange
  • sélectionner 4280-4285 puis cliquer sur Valider
  • cela filtre dans la feuille document unique et ferme l'userform
  • Défiltre sur la feuille document unique, puis retourne sur la feuille Accueil
  • clique sur le bouton te donne l'userform avec tous les items non sélectionnés et venant de la feuille document unique

A te relire

Bonjour Dan,

Désolé pour le retour tardif, sans connexion hier... J'ai bien suivi tes instructions et malheureusement les 2 sélections sont toujours présentes. C'est à n'y rien comprendre puisque théoriquement le Unload ferme l'userform.

J'ai fait cependant une découverte incomprehensible pour mon niveau Excel. Lorsqu'on déplace le bouton de forme de la page d'accueil sur la colonne D, les items sélectionnés dans la liste changent. Si on déplace le bouton en dehors de la colonne D, le problème disparait

Comment régler ce problème?

Bonne journée

Rechercher des sujets similaires à "deselectionner item initialisation listbox"