Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème avec les listbox dans un userform

5 réponses
Avatar
gil de lavergne
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et je
cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est prévu
dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton calendrier
(mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne

5 réponses

Avatar
michdenis
Bonsoir Gil,

Si je résume, tu ne sais pas d'où provient ta ligne vide qui s'affiche dans ta listbox. Est-ce exact ?

Si tu n'as pas de cellules vides, il n'y a aucune raison que ton listbox affiche une ligne vide SAUF si tu as défini la propriété
"ColumnHeads" à True.. Dans ce cas, sans que tu aies besoin de le dire à excel, ce dernier suppose qu'au dessus de la plage que tu
as utilisée pour définir le RowSource, se retrouve une ligne comportant l'étiquette de colonne. Si au dessus de ta liste des
données, il n'y a pas une étiquette de colonne, tu auras une ligne vide ...

Et pour illustrer :

A1 = Étiquette de colonne
A2:A10 = Les données

Si tu définis ton RowSource de cette manière :

ListBox.RowSource = "Feuil1!A2:A10" , selon que la propriété "ColumnHeads" est à True or False, le contenu de A1 apparaîtra comme
premier élément de la liste. Si A1 est vide et que la propriété "ColumnHeads" est à True, tu aurais une ligne blanche en début de
liste.


Salutations!








"gil de lavergne" a écrit dans le message de news:
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et je
cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est prévu
dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton calendrier
(mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne
Avatar
gil de lavergne
bonsoir,
et merci michdenis d'essayer de m'aider
je me suis mal exprime. j'essais de suivre le pas à pas de Misange sur les
userform et dans son tutoriel on devrait avoir le formulaire avec les
listbox et combo box vide au démarrage grâce à ce que j'ai compris à la
ligne de code listbox.listindex = -1 et combobox.listindex = -1 or ça marche
avec le combobox mais pas avec le listbox car quand te tape sur F5 le
formulaire à le champ du listbox avec le premier item de ma liste comme si
listindex ne marchait pas par contre le combobox réagit comme prévu et le
champ du formulaire est vide au démarrage et on peut le remplir en utilisant
la flèche.
dans le fichier exemple qui illustre le pas à pas ça marche et les ligne de
code son identique à ce que j'essai de reproduire.
en faisant ce que tu me dis j'ai le listbox qui a l'entête de ma liste et en
dessous j'ai le premier item de la liste
je ne comprend toujours pas comment pour obtenir le champ vide du listbox au
démarrage du listbox
cordialement
Gil de Lavergne
"michdenis" a écrit dans le message de news:
%
Bonsoir Gil,

Si je résume, tu ne sais pas d'où provient ta ligne vide qui s'affiche
dans ta listbox. Est-ce exact ?

Si tu n'as pas de cellules vides, il n'y a aucune raison que ton listbox
affiche une ligne vide SAUF si tu as défini la propriété
"ColumnHeads" à True.. Dans ce cas, sans que tu aies besoin de le dire à
excel, ce dernier suppose qu'au dessus de la plage que tu
as utilisée pour définir le RowSource, se retrouve une ligne comportant
l'étiquette de colonne. Si au dessus de ta liste des
données, il n'y a pas une étiquette de colonne, tu auras une ligne vide
...

Et pour illustrer :

A1 = Étiquette de colonne
A2:A10 = Les données

Si tu définis ton RowSource de cette manière :

ListBox.RowSource = "Feuil1!A2:A10" , selon que la propriété
"ColumnHeads" est à True or False, le contenu de A1 apparaîtra comme
premier élément de la liste. Si A1 est vide et que la propriété
"ColumnHeads" est à True, tu aurais une ligne blanche en début de
liste.


Salutations!








"gil de lavergne" a écrit dans le
message de news:
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et
je
cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est
prévu
dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton
calendrier
(mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne





Avatar
michdenis
Bonjour Gil,

Je ne connais pas le tutoriel à Misange et peut être te fera-t-elle ses propres commentaires à ce sujet ...

Attention de ne pas mélanger ListBox et Combobox, bien qu'il se ressemble, il y a quand même des différences !

A ) Le combobox ne peut pas afficher plus d'un item sélectionné par l'usager à la fois. Après la sélection de l'usager, lorsque
l'on désire enlever la sélection retenue par l'usager on utilise cette ligne de code combobox.listindex = -1

B ) Dans le cas du listbox, le contenu est toujours affiché et le nombre de lignes que le listbox affiche dépend de la hauteur que
l'on a affecté au listbox. Dans le cas du combobox, on peut utiliser cette propriété : ListRows pour définir le nombre de lignes que
le combobox affichera dans sa liste déroulante ...et au dela de ces lignes, il faut utiliser l'ascenseur.

La commande listbox.listindex = -1 sert à enlever la sélection (item du listbox) que l'usager a faite . Et cela est vrai, seulement
si la propriété MultiSelect du listbox est à 0 c'est-à-dire que l'usager ne peut sélectionner qu'un item à la fois dans le listbox.
Dans les autres cas, cette commande n'a aucun effet sur le listbox. Pour désélectionner les items du listbox le cas échéant, on doit
utiliser une petite procédure VBA, et boucler sur tous les items du listbox.


Salutations!


"gil de lavergne" a écrit dans le message de news:
bonsoir,
et merci michdenis d'essayer de m'aider
je me suis mal exprime. j'essais de suivre le pas à pas de Misange sur les
userform et dans son tutoriel on devrait avoir le formulaire avec les
listbox et combo box vide au démarrage grâce à ce que j'ai compris à la
ligne de code listbox.listindex = -1 et combobox.listindex = -1 or ça marche
avec le combobox mais pas avec le listbox car quand te tape sur F5 le
formulaire à le champ du listbox avec le premier item de ma liste comme si
listindex ne marchait pas par contre le combobox réagit comme prévu et le
champ du formulaire est vide au démarrage et on peut le remplir en utilisant
la flèche.
dans le fichier exemple qui illustre le pas à pas ça marche et les ligne de
code son identique à ce que j'essai de reproduire.
en faisant ce que tu me dis j'ai le listbox qui a l'entête de ma liste et en
dessous j'ai le premier item de la liste
je ne comprend toujours pas comment pour obtenir le champ vide du listbox au
démarrage du listbox
cordialement
Gil de Lavergne
"michdenis" a écrit dans le message de news:
%
Bonsoir Gil,

Si je résume, tu ne sais pas d'où provient ta ligne vide qui s'affiche
dans ta listbox. Est-ce exact ?

Si tu n'as pas de cellules vides, il n'y a aucune raison que ton listbox
affiche une ligne vide SAUF si tu as défini la propriété
"ColumnHeads" à True.. Dans ce cas, sans que tu aies besoin de le dire à
excel, ce dernier suppose qu'au dessus de la plage que tu
as utilisée pour définir le RowSource, se retrouve une ligne comportant
l'étiquette de colonne. Si au dessus de ta liste des
données, il n'y a pas une étiquette de colonne, tu auras une ligne vide
...

Et pour illustrer :

A1 = Étiquette de colonne
A2:A10 = Les données

Si tu définis ton RowSource de cette manière :

ListBox.RowSource = "Feuil1!A2:A10" , selon que la propriété
"ColumnHeads" est à True or False, le contenu de A1 apparaîtra comme
premier élément de la liste. Si A1 est vide et que la propriété
"ColumnHeads" est à True, tu aurais une ligne blanche en début de
liste.


Salutations!








"gil de lavergne" a écrit dans le
message de news:
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et
je
cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est
prévu
dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton
calendrier
(mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne





Avatar
Misange
Bonjour Gil,

C'est une gourance de ma part ! Une listbox, contrairement à une combo
ne permet d'avoir une ligne blanche en haut que si tu la prévois en
incluant une case blanche dans ta source de données.


Mais que veux tu faire exactement ?
Si ton but c'est de ne permettre à ton utilisateur de ne choisir que
parmi les items de la liste, tu peux soit utiliser une liste (et tu
choisis le nombre d'items qui seront affichés), soit utiliser une combo
mais en mettant sa propriété style à fmStyleDropDownList (2). Sinon par
défaut une combo est une liste déroulante modifiable avec une propriété
style mise à fmStyleDropDownCombo (0)

Un petit exemple là :
http://cjoint.com/?idj63eVgLT



Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 01/08/2005 20:00, :
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et je
cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est prévu
dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton calendrier
(mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne




Avatar
gil de lavergne
bonjour à tous et merci Misange pour ta réponse
car j'avais l'impression que j'avais loupé un truc
ce que je veux faire exactement c'est de m'initier aux userform en suivant
ton tutoriel et comprendre comment ça marche et plus tard pouvoir utilser
tous cela pour des fichiers à mon boulot parceque je trouve que c'est plus
conviviale que de remplir une feuille d'excel
merci pour toutes les infos que vous m'avez données
Gil de lavergne
"gil de lavergne" a écrit dans le message
de news:
bonjour à tous
je suis débutant dans le VBA d'excel et dimanche essayant de prendre mon
courage à deux mains, j'ai tenter de faire un formulaire en suivant les
conseils de Misange avec la fiche userfom du site disciplinus simplex et
je cale sans comprendre pourquoi je n'arrive pas à reproduire ce qui est
prévu dans la fiche
quand j'ai créé sur le userform un listbox et que je l'ai associé à une
liste je n'arrive pas à faire en sorte que lorsque j'execute la macro la
liste dans l'userfom à une ligne vide pourtant j'ai bien mis :

Private Sub UserForm_Initialize()

ListMotifRupture.RowSource = ("Feuil2!essai")
ListMotifRupture.ListIndex = -1
ComboBox1.RowSource = ("Feuil2!motifRupture")

ListBox1.RowSource = ("Feuil2!essai")
ListBox1.ListIndex = -1
End Sub
avec un combobox cela marche sans problème
ai-je oublié quelquechose ?
par ailleurs j'ai au bureau office 2003 et je n'ai pas de bouton
calendrier (mscal.ocx manquant)
j'ai pourtant access 2003 sur le poste et la référence access11 coché dans
les références
dans l'attente du plaisir de vous lire
gil de lavergne