Combobox : bug quand une seule valeur [Résolu]

Messages postés
3
Date d'inscription
dimanche 14 mars 2010
Dernière intervention
12 juin 2012
- - Dernière réponse : cs_lucky78
Messages postés
3
Date d'inscription
dimanche 14 mars 2010
Dernière intervention
12 juin 2012
- 12 juin 2012 à 23:06
Bonjour à tous,

Voila je me tourne vers vous parce que j'ai un problème en VBA avec une combobox remplie depuis une liste Excel à l'ouverture d'un userform. Cette liste n'est pas figée, elle est redéfinie à chaque fois et un end(xlup) permet de définir la taille de la combobox. Le problème est que tout marche bien quand il y a 2 valeurs ou plus dans cette liste, par contre lorsqu'il n'y en a qu'une, j'ai une erreur lors de l'initialisation de la combobox : "Impossible de définir la propriété List. Index de table de propriétés non valide ". Et je ne comprends pas bien pourquoi....

J'ai contourné le problème en mettant un Range fixe de manière à avoir toujours 5 valeurs dans ma combobox mais c'est loin d'être l'idéal, alors si quelqu'un pouvait m'aider ça serait génial !!!

Merci d'avance pour votre aide !
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Pour que tu comprennes mieux. Et que tu n'appelles plus bug" ce qui n'est pas un bug.
Ton code, tel qu'il est, tend à dresser un tableau à 2 dimensions, que tu envoies ensuite vers ta combo.
Un tel tableau ne peut toutefois pas concerner une seule cellule.
Fais donc cette expérience :
With Sheets("Lists")
   toto = .Range("J2:J" & .Range("J500").End(xlUp).Row).Value
   msgbox ubound(toto) 
End With

Tout se passera bien si plus d'un rang, mais tu auras une erreur si un seul rang, bien évidemment.
Il te faudrait alors gérer, avec ta méthode, deux cas : un pour si plusieurs rangs (comme tu le fais) et un si moins de deux rangs (en alimentant alors avec additem) !
Lourd lourd et inutilement lourd alors que l'utilisation de la propriété RowSource fait tout ce travail-là !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Je ne parviens pas à générer cette situation, malgré mes efforts.
Montre-nous donc le code utilisé et les propriétés de ta combo.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3
Date d'inscription
dimanche 14 mars 2010
Dernière intervention
12 juin 2012
0
Merci
La liste est générée correctement, je ne pense pas que le problème vienne de là donc je ne mets pas le code. Ensuite j'appelle l'userform avec .Show et j'initialise la combobox comme ça :

Private Sub UserForm_Initialize()
 
With Sheets("Lists")
   ComboBoxProjet.List = .Range("J2:J" & .Range("J500").End(xlUp).Row).Value
    
End With

End Sub


L'erreur survient à ce moment là.

Pour les propriétés de la combobox, il doit y avoir un moyen simple de les récupérer mais je ne le connais pas. Sinon quelles sont les propriétés que tu aurais besoin de te connaitre ?

Merci de te pencher sur mon problème en tout cas !
Commenter la réponse de cs_lucky78
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
1) Affiche donc la fenêtre des propriétés !
2) tu t'y prends de mauvaise manière : intéresse-toi donc à la propriété RowSource et utilise-la, plutôt que de faire comme tu le fais. En d'autres termes : lie ta combo à tes cellules.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3
Date d'inscription
dimanche 14 mars 2010
Dernière intervention
12 juin 2012
0
Merci
Ok je comprends mieux pourquoi seul le cas avec une seule valeur ne passait pas !
Je teste dès demain avec Rowsource, ça devrait mieux aller, merci beaucoup !
Commenter la réponse de cs_lucky78

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.