OVH Cloud OVH Cloud

combobox

10 réponses
Avatar
CBR
Bonjour à tous

J'ai besoin d'aide sur une liste déroulante de combobox.
J'ai paramétré ma cbox pour qu'elle m'affiche un liste située de B1 à
B150..( ComboBox2.RowSource = "Réf!b1:b150" )
Jusqu'a là OK pas de prob je sais faire.
Ce qui me gêne c'est l'affichage dans cette liste des cellules vides situées
entre B1 et B150
A savoir que le nbre de ces cellules vides peut varier selon qu'on les
renseigne ou non et de plus sont éparpillées dans cet intervalle "B1:B150"
Y a t'il une astuce pour afficher dans ma cbox uniquement les cellules non
vides ?

Si quelqu'un à une solution , je suis preneur.

Merci

CBR

10 réponses

Avatar
lSteph
Bonjour,
remplir en boucle au lieu d'affecter directement la plage à RowSource
exemple:

Private Sub Userform_Initialize()
Dim c As Range
ComboBox2.Clear
For Each c In [b1:b150].Cells
If Not IsEmpty(c) Then ComboBox2.AddItem c
Next
End Sub

'Cordialement

'lSteph

"CBR" a écrit dans le message de news:
44e4b7b0$0$26024$

Bonjour à tous

J'ai besoin d'aide sur une liste déroulante de combobox.
J'ai paramétré ma cbox pour qu'elle m'affiche un liste située de B1 à
B150..( ComboBox2.RowSource = "Réf!b1:b150" )
Jusqu'a là OK pas de prob je sais faire.
Ce qui me gêne c'est l'affichage dans cette liste des cellules vides
situées entre B1 et B150
A savoir que le nbre de ces cellules vides peut varier selon qu'on les
renseigne ou non et de plus sont éparpillées dans cet intervalle "B1:B150"
Y a t'il une astuce pour afficher dans ma cbox uniquement les cellules non
vides ?

Si quelqu'un à une solution , je suis preneur.

Merci

CBR



Avatar
JB
Bonsoir,


Private Sub UserForm_Initialize()
Dim temp()
ReDim temp(100)
i = 0
For Each c In Range([b2], [b65000].End(xlUp))
If c <> "" Then
temp(i) = c
i = i + 1
End If
Next c
ReDim Preserve temp(i - 1)
Me.ComboBox1.List = temp
End Sub

Cordialement JB


Bonjour à tous

J'ai besoin d'aide sur une liste déroulante de combobox.
J'ai paramétré ma cbox pour qu'elle m'affiche un liste située de B1 à
B150..( ComboBox2.RowSource = "Réf!b1:b150" )
Jusqu'a là OK pas de prob je sais faire.
Ce qui me gêne c'est l'affichage dans cette liste des cellules vides si tuées
entre B1 et B150
A savoir que le nbre de ces cellules vides peut varier selon qu'on les
renseigne ou non et de plus sont éparpillées dans cet intervalle "B1: B150"
Y a t'il une astuce pour afficher dans ma cbox uniquement les cellules non
vides ?

Si quelqu'un à une solution , je suis preneur.

Merci

CBR


Avatar
CBR
Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf" qui n'est
pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille qu'il
faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR
Avatar
lSteph
...
Feuil2.Activate 'ou (autre que 2) mais le codename est parfois préférable à
un nom qui peut changer
ou
worksheets("Ref").activate

Cordialement.

lSteph
"CBR" a écrit dans le message de news:
44e4d961$0$26948$
Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf" qui
n'est pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille qu'il
faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR





Avatar
CBR
Bonsoir lSteph
cette solution ne me convient pas
le but est d'aller chercher les données sur une feuille non active

merci tt de même
CBR

"lSteph" a écrit dans le message de news:

...
Feuil2.Activate 'ou (autre que 2) mais le codename est parfois préférable
à un nom qui peut changer
ou
worksheets("Ref").activate

Cordialement.

lSteph
"CBR" a écrit dans le message de news:
44e4d961$0$26948$
Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf" qui
n'est pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille qu'il
faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR









Avatar
JB
J'ai extrait cette séquence d'un pgm avec tri. S'il n'y pas de tri,
Additem est bien sûr + simple.

-Si on travaille sur la feuille active, il n'est pas nécessaire de
mettre le nom de feuille

-Si ce n'est pas la feuille active:
Me.ComboBox2.RowSource = Sheets("xx").Range("B2:B50")

-En utilisant des noms de champ, on s'affranchit des pb de feuilles:

Me.ComboBox2.RowSource = [Toto]

For Each c In [Toto]
If c <> "" Then Me.ComboBox1.AddItem c
Next c

http://cjoint.com/?irxkfjO3f5

JB

Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf " qui n'est
pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille qu' il
faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR


Avatar
lSteph
..alors on y est presque:
...
....Worksheets("Ref").[b1:b150].cells
...
"CBR" a écrit dans le message de news:
44e4ddcd$0$27355$
Bonsoir lSteph
cette solution ne me convient pas
le but est d'aller chercher les données sur une feuille non active

merci tt de même
CBR

"lSteph" a écrit dans le message de news:

...
Feuil2.Activate 'ou (autre que 2) mais le codename est parfois préférable
à un nom qui peut changer
ou
worksheets("Ref").activate

Cordialement.

lSteph
"CBR" a écrit dans le message de news:
44e4d961$0$26948$
Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf" qui
n'est pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille
qu'il faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR













Avatar
JB
Me.ComboBox1.RowSource = "xxx!B2:B5"
Me.ComboBox1.RowSource = "Toto"

JB



Hello JB , lSteph

Effectivement , mettre sous forme de tableau en premier lieu est chose
faisable. J'espérai un truc plus simple , mais bon! pas le choix
à première vue.
Je vais peut-être essayer en premier la soluce de lSteph (remplissage en
boucle), car plus courte ;-)

Autre problème, ces données se trouve sur une feuille nommée "Réf " qui n'est
pas la feuille active lors de
l'appel de l'userform. Comment préciser que c'est sur cette feuille qu' il
faut aller chercher les données ?
..( ComboBox2.RowSource = "Réf!b1:b150" )..

Encore merci de votre aide à tt les 2

CBR


Avatar
CBR
Rebonsoir

Ok , c'est super çà marche.
Merci à vous deux JB et lSteph pour votre aide efficace et rapide.
Merci pour le fichier joint, JB, vais me le mettre de coté


Bonne nuit à tous

CBR
Avatar
lSteph
"...ce fut avec plaisir!"

lSteph

(..pardon...original de R__Phil)
"CBR" a écrit dans le message de news:
44e4e8ef$0$27361$
Rebonsoir

Ok , c'est super çà marche.
Merci à vous deux JB et lSteph pour votre aide efficace et rapide.
Merci pour le fichier joint, JB, vais me le mettre de coté


Bonne nuit à tous

CBR