Problème Listbox

Résolu
François - Modifié par jordane45 le 20/02/2014 à 13:40
 François - 20 févr. 2014 à 17:40
Bonjour,

J'ai créé une listbox qui recueille une série de donnée et l'utilisateur doit faire un ou plusieurs choix dans cette liste.

Le souci c'est que lorsque j'ouvre l'userform, j'ai déjà des valeurs qui sont pré-sélectionnées. Je ne parviens pas à savoir pourquoi ces valeurs sont sélectionnées 1 coup et qu'elles ne le sont pas une autre fois.

Je vous mets ci-dessous l'initialize de l'userform. La listbox en question est la listbox1.

Un très grand merci d'avance !

--------------------------------
Private Sub UserForm_Initialize()

'Tri de la liste utilisée dans la listbox1
Sheets("BDDListes").Select
lig1 = Sheets("BDDListes").Range("A100000").End(xlUp).Row
lig2 = Sheets("BDDListes").Range("B100000").End(xlUp).Row
lig3 = Sheets("BDDListes").Range("C100000").End(xlUp).Row
lig4 = Sheets("BDDListes").Range("D100000").End(xlUp).Row
lig = Application.WorksheetFunction.Max(lig1, lig2, lig3, lig4)
Range(Cells(2, 1), Cells(lig, 4)).Sort Key1:=Range("B1")
lig2 = Sheets("BDDListes").Range("B100000").End(xlUp).Row

'Source de la listbox1
If lig2 = 1 Then
ListBox1.RowSource = "BDDListes!B2:B2"
Else
ListBox1.RowSource = "BDDListes!B2:B" & lig2
End If
Sheets("JourInventaire").Select

End Sub

8 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 20/02/2014 à 17:33
Ah ben.. il semble que ton USF apparaisse pile au dessus de ton bouton et ta listbox se trouve pile au dessus de cette zone ( a droite de ton T )..
Donc tu cliques.. l' USF apparait.. tu relaches ton clique ( c'est super rapide mais ça suffit).. c'est comme si tu cliquais sur ta listbox en fait...

Déplace ton bouton.. ou l'affichage de ton USF..

Edit : Par exemple en ajoutant ça à la fin de ton Initialize()

Me.StartUpPosition = 0
    Me.Top = Application.Top + 25
    Me.Left = 100
2
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 14
Modifié par pijaku le 20/02/2014 à 15:07
Bonjour,

Sans plus amples informations, en particulier ton code "ouvrant" et "fermant" l'UserForm, nous ne pouvons que supputer.
Supputons donc.
Tu dis :
Je ne parviens pas à savoir pourquoi ces valeurs sont sélectionnées 1 coup et qu'elles ne le sont pas une autre fois.
Je pencherai donc sur une "ouverture" et/ou "fermeture" de ton UserForm sans initialisation, comme ceci :
' à la "fermeture"
UserForm1.Hide
' à l'"ouverture" :
UserForm1.Show


Si tu ne fais que le cacher (Hide) et non le "décharger de la mémoire" (UnLoad), les présélections précédentes de ta ListBox seront toujours sélectionnées...

Essaie de le fermer en utilisant :
UnLoad Me


EDIT : ajout des guillemets

Cordialement,
Franck
1
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
20 févr. 2014 à 13:42
Bonjour,
Je me suis permis d'éditer ton message pour y ajouter les balises de code.
Merci d'y penser lors de tes prochains messages.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 févr. 2014 à 14:02
Bonjour,
le code montré n'a aucune espèce d'influence sur la pré-sélection que tu constates.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Du coup si le code n'a pas d'influence, quelle peut en être la cause ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
Modifié par jordane45 le 20/02/2014 à 15:15
La selection dans tes listbox apparait systématiquement ?
par exemple : dès le lancement de ton programme la première fois ?


EDIT : Je viens de voir ce commentaire :
ces valeurs sont sélectionnées 1 coup et qu'elles ne le sont pas une autre fois.

Les fois où elles sont séléctionnées.. ne serait-ce pas après avoir déjà commencé à utiliser ton programme ?
Par exemple à un moment donné tu masque ton userform ( userform.hide ) puis te le réaffiche et là tu as des choses de sélectionné ??
Si c'est ça.. c'est simplement du au fait que tu n'a pas "détruit" ton userform avant de le réouvrir..donc il concerve les infos telles que tu les as laissé en masquant ton USF.

Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
Bonjour et merci de ta réponse !

J'ouvre/Je ferme le userform systématiquement de la même manière (aucune action, aucune sélection dans la listebox, juste sortir du userform) plusieurs fois, le 1/3 du temps (de manière aléatoire) j'ai des valeurs sélectionnées, les 2/3 rien de sélectionné.
Le souci c'est que je n'arrive pas à voir de logique à l'apparition de ces sélections alors qu'il y en a forcément une.
0
Merci pour les pistes, je ferme bien les userform avec le unload à la fin. Par contre j'utilise show à l'ouverture. Ca ne serait donc pas ça ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
20 févr. 2014 à 16:34
Le .Show, si ta fenêtre n'est pas encore initialisée le fait.
Maintenant il est plus propre de faire un LOAD de ton USF .. et seulement un Show lorsque tu as besoin de l'afficher.
0
Pardon, je disais n'importe quoi.

Je clic sur un bouton dans Excel qui lance une macro qui a ce code
Sub Macro10()
Load UserForm9
UserForm9.Show
End Sub
0
Je vais recréer une autre listbox en partant de rien, voir si ce n'est pas une histoire de popriété
0
Quand je clic sur une zone du bouton de macro ça le fait à chaque fois et jamais le reste du temps =)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 14
20 févr. 2014 à 17:03
Quand je clic sur une zone du bouton de macro ça le fait à chaque fois et jamais le reste du temps =)
Me semble bien impossible, à moins que...

A ce point, sans classeur exemple (sans données confidentielles), il sera malaisé de te répondre.
Pour transmettre un fichier sur ce site, il convient, au préalable, de créer un lien vers ce fichier en utilisant http://cjoint.com et de revenir coller le lien fournit, ici, dans une réponse.
0
Ok la voilà la logique =) merci beaucoup
0
Rejoignez-nous