Probleme de combobox

pcmac

XLDnaute Nouveau
Bonjour,

Je viens de me mettre aux formulaires, et je rencontre un souci.

Je cherche à automatiser le remplissage d'une base de donnée (un fichier excel). A un moment, l'utilisateur doit rentrer un lot dans une liste que je lui propose. Idéalement je souhaiterais qu'il ne puisse rien rentrer d'autre que ce que je lui propose.
J'ai créée une combobox, double cliqué dessus et rentrer ceci pour définir les choix:

Private Sub ComboBox1_Change()
ComboBox1.AddItem "titi"
ComboBox1.AddItem "toto"
ComboBox1.AddItem "tutu"
End Sub

Cependant je rencontre les problème suivants:
-à l'ouverture du userform, rien ne se met dans la box (quand je clique sur le menu déroulant, rien ne s'affiche). Il faut saisir les 2 premières lettres, et à ce moment, l'ordinateur complète automatiquement avec le mot correspondant.
-à partir de ce moment la, si on efface le mot entré, alors le menu déroulant contient soudainement mes 3 mots: titi, toto et tutu (ce qui n'était pas le cas 30 sec plus tôt)
-L'utilisateur peut entrer "anticonstitutionnellement" dans la liste et poursuivre, alors que je souhaiterais qu'il ne puisse pas entrer d'autres mots que ceux autorisés.

J'ai cherché sur les forums, je ne trouve pas de solutions:
-j'ai modifié la valeur style en mettant le choix 2 "dropdown list" je ne remarque aucun changement
-j'ai essayé de créer une listbox, quand je double clique dessus j'ai tapé le code suivant:

Private Sub ListBox1_Click()
ListBox1.AddItem "tata"
ListBox1.AddItem "tete"
ListBox1.AddItem "titi"
ListBox1.AddItem "tintin"
ListBox1.AddItem "toto"
ListBox1.AddItem "toutou"
ListBox1.AddItem "tutu"
ListBox1.AddItem "tyty"
End Sub

...sans succès, quand je lance le formulaire, impossible d'écrire dans la listbox

-j'ai mis "true" dans match required...aucune modification de notée

Bref, comment faire ??? Je préférerais garder la combobox.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Probleme de combobox

Bonjour le Pcmac et bienvenu, Bonjour Hasco, bonjour le forum,

En pièce jointe un petit exemple (que tu aurais pu fournir toi-même pour nous éviter d'avoir à tout faire et de mettre l'ami Hasco en colère...).
Il y a bien sûr pas mal de manières de faire et nous avons chacun nos petites habitudes...
Pour ma part je préfère alimenter les comboboxes/Listboxes à l'initialisation de l'Userform. J'utilise parfois un onglet rien que pour ça (Listes dans mon exemple) plutôt que de les alimenter en dur... Pour interdire à l'utilisateur d'éditer une combobox j'attribue à la propriété Style la valeur 2 - fmStyleDropDownList.
Le code :
Code:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
With Sheets("Listes") 'prend en compte l'onglet "Listes"
    Me.ComboBox1.List = .Range("A1:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Value 'alimente dynamiquement la ComboBox1
    Me.ComboBox2.List = .Range("B1:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row).Value 'alimente dynamiquement la ComboBox2
    Me.ComboBox3.AddItem "oui" 'ajoute "oui" à la ComboBox3 en dur
    Me.ComboBox3.AddItem "non" 'ajoute "non" à la ComboBox3 en dur
End With 'fin de la prise en compte de...
End Sub
Le fichier :
 

Pièces jointes

  • PCmac_v01.xls
    29.5 KB · Affichages: 36

pcmac

XLDnaute Nouveau
Re : Probleme de combobox

Bonjour,

Je vous remercie pour votre aide. En effet on peut utiliser une feuille sur le document pour y taper les mots autorisés et définir ainsi la liste. Cependant ce que je cherche à savoir, c'est ou est mon erreur quand je définis chacun des mots dans ma fonction combobox1_change.

J'ai tendance à dire que c'est le bon endroit puisque mes mots sont bien reconnus quand l'utilisateur tape les 2 premières lettres...néanmoins vu que cela ne marche pas, j'imagine que je n'ai pas bien fait les choses. Pourtant j'avais bien mis le paramètre "style" en -2

Effectivement le code que vous me proposez fonctionne parfaitement. Mais si je veux absolument éviter la définition d'une liste en sacrifiant une feuille de mon fichier, comment puis-je faire ?

Ou ai-je mal fait ? Concrètement, j'ai une macro qui me lance mon userform:

Sub macro_lancer_formulaire()
UserForm1.Show
End Sub

Mon userform récupère tout ce que l'utilisateur tape, j'ai créé un bouton valider ; et ai associé à ce bouton une longue macro qui va copier dans les bons onglets, créer des lignes etc... les infos saisies par l'utilisateur.

EDIT: en fait je pense que le problème vient de ma compréhension de la fonction userform initialize

EDIT 2: Cela semble marcher à présent. Je me permets donc de faire un retour plus détaillé pour les personnes qui débutent.

Pour définir efficacement les mots, il ne faut pas les mettre dans la macro Private Sub ComboBox1_Change(), mais dans la macro Sub UserForm_Initialize().
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 088
Membres
103 712
dernier inscrit
Charles authentique