OVH Cloud OVH Cloud

listbox

5 réponses
Avatar
GIBI68
Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne se
suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci

5 réponses

Avatar
anonymousA
bonjour,

le+ simple reste de remplri ton lstbox par la propriété additem

p.e

en admettant que tu parcours la plage discontinue de A1 à B2 et de C3 à D4

set plage=Union(range("A1:B2"),range("C3:D4"))

for each c in plage
me.listbox1.additem c.value
next

tu peux bricoler la nautre de ta plage selon toutes les consfigurations
possibles pour un objet range

A+


Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne se
suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci




Avatar
GIBI68
Je ne me suis pas exprimé clairement je te mets une partie de mon code
For row = 1 To 1500
If Sheets("tarif2").Cells(row, 10) = ivval And Sheets("tarif2").Cells(row,
6) = dimension1 And Sheets("tarif2").Cells(row, 7) = dimension2 And
Sheets("tarif2").Cells(row, 8) = dimension3 Then Exit For
Next row

Je me doute que ce genre de test n'est pas terrible m'enfin il fonctionne.

Je voudrais que chaque fois que je sors de la boucle la ligne vienne
s'afficher dans le listbox
ou plus compliqué pour moi qu'elle vienne se mettre dans un tableau et
afficher le tableau dans la listbox .Je suis sur la fonction array mais je
n'avance plus.

Merci de ton interet pour mon pb


"anonymousA" a écrit dans le message de news:
42077c31$0$10459$
bonjour,

le+ simple reste de remplri ton lstbox par la propriété additem

p.e

en admettant que tu parcours la plage discontinue de A1 à B2 et de C3 à D4

set plage=Union(range("A1:B2"),range("C3:D4"))

for each c in plage
me.listbox1.additem c.value
next

tu peux bricoler la nautre de ta plage selon toutes les consfigurations
possibles pour un objet range

A+


Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne se
suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci






Avatar
anonymousA
re,

je te donne un exemple de remplissage de listbox issu de l'aide d'Excel
auquel j'ai rajouté quelques commentaires plus explicatifs ( en fait
très peu car elle est bien faite).
Elle a le mérite de marier tes 2 demandes , à savoir rentrer des données
dans un tableau et les renvoyer à une listbox.
Je pense qu'à partir de ça , c'est une bonne base pour toi pour
developper ce que tu veux réellement.

'exemple5 :remplir 2 listbox ou combobox à partir de tableaux et utiliser
'la propriété columcount qui permet de définir le nombre de colonnes
'd'une listbox ou d'un combobox
'On notera que la propriété Listindex commence à 0 dans un combobox ou
une listbox
'Au passage le fait de passer par la propriété Column de Lisbox
'transpose le tableau MyArray

Dim MyArray(0 To 5, 0 To 2)
'la 1ere listbox contiendra 3 colonnes de données
' ListBox1.ColumnCount = 3
'la 2eme listbox contiendra 6 colonnes de données
ListBox2.ColumnCount = 6
'Chargement des valeurs entières dans la 1ere colonne de MyArray
For i = 0 To 5: MyArray(i, 0) = i: Next i

'Chargement des valeurs dans la 2eme et 3eme colonne de MyArray
MyArray(0, 1) = "Zero": MyArray(1, 1) = "One": MyArray(2, 1) = "Two"
MyArray(3, 1) = "Three": MyArray(4, 1) = "Four": MyArray(5, 1) = "Five"

MyArray(0, 2) = "Zero": MyArray(1, 2) = "Un ou Une": MyArray(2, 2) = "Deux"
MyArray(3, 2) = "Trois": MyArray(4, 2) = "Quatre": MyArray(5, 2) = "Cinq"

'Chargement des données dans ListBox1 and ListBox2
'Listbox1 est donc une matrice (6,3) et Listbox2 une matrice(3,6)
ListBox1.List() = MyArray: ListBox2.Column() = MyArray

La difficulté pour toi viendra de ce que j'ai pu comprendre du fait que
tu ne disposes pas à priori du nombre d'éléments que tu veux rentrer
dans ton listbox. En conséquence, la définition de la limite haute du
tableau peut être problématique car pour un tableau à plusieurs
dimensions on ne peut redimensionner dynamiquement ( par les mots-clés
Redim et eventuellement preserve) que la dernière dimension du tableau .

Ceci dit, rien ne t'empêche de déclarer un tableau de 1ere dimension
très grande (ca bouffe de la mémoire mais vu les programmes qu'on
développe usuellement, ca mange rarement de pain), puis de rentrer des
éléments dans ton listbox et enfin de supprimer les élements vides du
listbox par un controle sur la valeur de ces éléments ( par
l'instruction , de mémoire, removeitem ).

A+

Je ne me suis pas exprimé clairement je te mets une partie de mon code
For row = 1 To 1500
If Sheets("tarif2").Cells(row, 10) = ivval And Sheets("tarif2").Cells(row,
6) = dimension1 And Sheets("tarif2").Cells(row, 7) = dimension2 And
Sheets("tarif2").Cells(row, 8) = dimension3 Then Exit For
Next row

Je me doute que ce genre de test n'est pas terrible m'enfin il fonctionne.

Je voudrais que chaque fois que je sors de la boucle la ligne vienne
s'afficher dans le listbox
ou plus compliqué pour moi qu'elle vienne se mettre dans un tableau et
afficher le tableau dans la listbox .Je suis sur la fonction array mais je
n'avance plus.

Merci de ton interet pour mon pb


"anonymousA" a écrit dans le message de news:
42077c31$0$10459$

bonjour,

le+ simple reste de remplri ton lstbox par la propriété additem

p.e

en admettant que tu parcours la plage discontinue de A1 à B2 et de C3 à D4

set plage=Union(range("A1:B2"),range("C3:D4"))

for each c in plage
me.listbox1.additem c.value
next

tu peux bricoler la nautre de ta plage selon toutes les consfigurations
possibles pour un objet range

A+



Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne se
suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci











Avatar
GIBI68
RE,

Malgré beaucoup de recherche je n'y arrive pas : pourquoi 2 listbox ?

Dim MyArray(0 To 5000, 0 To 1)
liste1.ColumnCount = 5


' ICI je définis la ligne dont quatre colonnes correspondent aux critères de
recherche et je mets (en tout cas je crois les n° de lignes en mémoire)

For row = 1 To 5000
If Sheets("tarif2").Cells(row, 1) = "" Then Exit For
If Sheets("tarif2").Cells(row, 10) = ivval And Sheets("tarif2").Cells(row,
6) = dimen1 And Sheets("tarif2").Cells(row, 7) = dimen2 And
Sheets("tarif2").Cells(row, 8) = dimen3 Then MyArray(row, 0) = row
Next row


'Chargement des valeurs dans la 2eme et 3eme colonne de MyArray
MyArray(row, 1) = Sheets("tarif2").Cells(row, 1): MyArray(row, 1) Sheets("tarif2").Cells(row, 2): MyArray(row, 1) Sheets("tarif2").Cells(row, 3)
MyArray(row, 1) = Sheets("tarif2").Cells(row, 4): MyArray(row, 1) Sheets("tarif2").Cells(row, 5)
liste1.List() = MyArray:
Je ne trouve pas le moyen d'enregistrer plusieurs lignes qui correspondent
aux critères

Si tu as encore un peu de temps merci d'avance je rame je rame je rame
a+

"anonymousA" a écrit dans le message de news:
42078ed5$0$2194$
re,

je te donne un exemple de remplissage de listbox issu de l'aide d'Excel
auquel j'ai rajouté quelques commentaires plus explicatifs ( en fait
très peu car elle est bien faite).
Elle a le mérite de marier tes 2 demandes , à savoir rentrer des données
dans un tableau et les renvoyer à une listbox.
Je pense qu'à partir de ça , c'est une bonne base pour toi pour
developper ce que tu veux réellement.

'exemple5 :remplir 2 listbox ou combobox à partir de tableaux et utiliser
'la propriété columcount qui permet de définir le nombre de colonnes
'd'une listbox ou d'un combobox
'On notera que la propriété Listindex commence à 0 dans un combobox ou
une listbox
'Au passage le fait de passer par la propriété Column de Lisbox
'transpose le tableau MyArray

Dim MyArray(0 To 5, 0 To 2)
'la 1ere listbox contiendra 3 colonnes de données
' ListBox1.ColumnCount = 3
'la 2eme listbox contiendra 6 colonnes de données
ListBox2.ColumnCount = 6
'Chargement des valeurs entières dans la 1ere colonne de MyArray
For i = 0 To 5: MyArray(i, 0) = i: Next i

'Chargement des valeurs dans la 2eme et 3eme colonne de MyArray
MyArray(0, 1) = "Zero": MyArray(1, 1) = "One": MyArray(2, 1) = "Two"
MyArray(3, 1) = "Three": MyArray(4, 1) = "Four": MyArray(5, 1) = "Five"

MyArray(0, 2) = "Zero": MyArray(1, 2) = "Un ou Une": MyArray(2, 2) "Deux"
MyArray(3, 2) = "Trois": MyArray(4, 2) = "Quatre": MyArray(5, 2) = "Cinq"

'Chargement des données dans ListBox1 and ListBox2
'Listbox1 est donc une matrice (6,3) et Listbox2 une matrice(3,6)
ListBox1.List() = MyArray: ListBox2.Column() = MyArray

La difficulté pour toi viendra de ce que j'ai pu comprendre du fait que
tu ne disposes pas à priori du nombre d'éléments que tu veux rentrer
dans ton listbox. En conséquence, la définition de la limite haute du
tableau peut être problématique car pour un tableau à plusieurs
dimensions on ne peut redimensionner dynamiquement ( par les mots-clés
Redim et eventuellement preserve) que la dernière dimension du tableau .

Ceci dit, rien ne t'empêche de déclarer un tableau de 1ere dimension
très grande (ca bouffe de la mémoire mais vu les programmes qu'on
développe usuellement, ca mange rarement de pain), puis de rentrer des
éléments dans ton listbox et enfin de supprimer les élements vides du
listbox par un controle sur la valeur de ces éléments ( par
l'instruction , de mémoire, removeitem ).

A+

Je ne me suis pas exprimé clairement je te mets une partie de mon code
For row = 1 To 1500
If Sheets("tarif2").Cells(row, 10) = ivval And
Sheets("tarif2").Cells(row,


6) = dimension1 And Sheets("tarif2").Cells(row, 7) = dimension2 And
Sheets("tarif2").Cells(row, 8) = dimension3 Then Exit For
Next row

Je me doute que ce genre de test n'est pas terrible m'enfin il
fonctionne.



Je voudrais que chaque fois que je sors de la boucle la ligne vienne
s'afficher dans le listbox
ou plus compliqué pour moi qu'elle vienne se mettre dans un tableau et
afficher le tableau dans la listbox .Je suis sur la fonction array mais
je


n'avance plus.

Merci de ton interet pour mon pb


"anonymousA" a écrit dans le message de news:
42077c31$0$10459$

bonjour,

le+ simple reste de remplri ton lstbox par la propriété additem

p.e

en admettant que tu parcours la plage discontinue de A1 à B2 et de C3 à
D4




set plage=Union(range("A1:B2"),range("C3:D4"))

for each c in plage
me.listbox1.additem c.value
next

tu peux bricoler la nautre de ta plage selon toutes les consfigurations
possibles pour un objet range

A+



Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne se
suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci













Avatar
GIBI68
STOP CA MARCHE
Merci Pour tout
Je n'ai pas le sentiment d'avoir fait un super code mais CA MARCHE

Bonne journée
JM



"GIBI68" a écrit dans le message de news:
#
RE,

Malgré beaucoup de recherche je n'y arrive pas : pourquoi 2 listbox ?

Dim MyArray(0 To 5000, 0 To 1)
liste1.ColumnCount = 5


' ICI je définis la ligne dont quatre colonnes correspondent aux critères
de

recherche et je mets (en tout cas je crois les n° de lignes en mémoire)

For row = 1 To 5000
If Sheets("tarif2").Cells(row, 1) = "" Then Exit For
If Sheets("tarif2").Cells(row, 10) = ivval And Sheets("tarif2").Cells(row,
6) = dimen1 And Sheets("tarif2").Cells(row, 7) = dimen2 And
Sheets("tarif2").Cells(row, 8) = dimen3 Then MyArray(row, 0) = row
Next row


'Chargement des valeurs dans la 2eme et 3eme colonne de MyArray
MyArray(row, 1) = Sheets("tarif2").Cells(row, 1): MyArray(row, 1) > Sheets("tarif2").Cells(row, 2): MyArray(row, 1) > Sheets("tarif2").Cells(row, 3)
MyArray(row, 1) = Sheets("tarif2").Cells(row, 4): MyArray(row, 1) > Sheets("tarif2").Cells(row, 5)
liste1.List() = MyArray:
Je ne trouve pas le moyen d'enregistrer plusieurs lignes qui correspondent
aux critères

Si tu as encore un peu de temps merci d'avance je rame je rame je rame
a+

"anonymousA" a écrit dans le message de news:
42078ed5$0$2194$
re,

je te donne un exemple de remplissage de listbox issu de l'aide d'Excel
auquel j'ai rajouté quelques commentaires plus explicatifs ( en fait
très peu car elle est bien faite).
Elle a le mérite de marier tes 2 demandes , à savoir rentrer des données
dans un tableau et les renvoyer à une listbox.
Je pense qu'à partir de ça , c'est une bonne base pour toi pour
developper ce que tu veux réellement.

'exemple5 :remplir 2 listbox ou combobox à partir de tableaux et
utiliser


'la propriété columcount qui permet de définir le nombre de colonnes
'd'une listbox ou d'un combobox
'On notera que la propriété Listindex commence à 0 dans un combobox ou
une listbox
'Au passage le fait de passer par la propriété Column de Lisbox
'transpose le tableau MyArray

Dim MyArray(0 To 5, 0 To 2)
'la 1ere listbox contiendra 3 colonnes de données
' ListBox1.ColumnCount = 3
'la 2eme listbox contiendra 6 colonnes de données
ListBox2.ColumnCount = 6
'Chargement des valeurs entières dans la 1ere colonne de MyArray
For i = 0 To 5: MyArray(i, 0) = i: Next i

'Chargement des valeurs dans la 2eme et 3eme colonne de MyArray
MyArray(0, 1) = "Zero": MyArray(1, 1) = "One": MyArray(2, 1) = "Two"
MyArray(3, 1) = "Three": MyArray(4, 1) = "Four": MyArray(5, 1) = "Five"

MyArray(0, 2) = "Zero": MyArray(1, 2) = "Un ou Une": MyArray(2, 2) > "Deux"
MyArray(3, 2) = "Trois": MyArray(4, 2) = "Quatre": MyArray(5, 2) "Cinq"

'Chargement des données dans ListBox1 and ListBox2
'Listbox1 est donc une matrice (6,3) et Listbox2 une matrice(3,6)
ListBox1.List() = MyArray: ListBox2.Column() = MyArray

La difficulté pour toi viendra de ce que j'ai pu comprendre du fait que
tu ne disposes pas à priori du nombre d'éléments que tu veux rentrer
dans ton listbox. En conséquence, la définition de la limite haute du
tableau peut être problématique car pour un tableau à plusieurs
dimensions on ne peut redimensionner dynamiquement ( par les mots-clés
Redim et eventuellement preserve) que la dernière dimension du tableau .

Ceci dit, rien ne t'empêche de déclarer un tableau de 1ere dimension
très grande (ca bouffe de la mémoire mais vu les programmes qu'on
développe usuellement, ca mange rarement de pain), puis de rentrer des
éléments dans ton listbox et enfin de supprimer les élements vides du
listbox par un controle sur la valeur de ces éléments ( par
l'instruction , de mémoire, removeitem ).

A+

Je ne me suis pas exprimé clairement je te mets une partie de mon code
For row = 1 To 1500
If Sheets("tarif2").Cells(row, 10) = ivval And
Sheets("tarif2").Cells(row,


6) = dimension1 And Sheets("tarif2").Cells(row, 7) = dimension2 And
Sheets("tarif2").Cells(row, 8) = dimension3 Then Exit For
Next row

Je me doute que ce genre de test n'est pas terrible m'enfin il
fonctionne.



Je voudrais que chaque fois que je sors de la boucle la ligne vienne
s'afficher dans le listbox
ou plus compliqué pour moi qu'elle vienne se mettre dans un tableau et
afficher le tableau dans la listbox .Je suis sur la fonction array
mais



je
n'avance plus.

Merci de ton interet pour mon pb


"anonymousA" a écrit dans le message de news:
42077c31$0$10459$

bonjour,

le+ simple reste de remplri ton lstbox par la propriété additem

p.e

en admettant que tu parcours la plage discontinue de A1 à B2 et de C3
à




D4

set plage=Union(range("A1:B2"),range("C3:D4"))

for each c in plage
me.listbox1.additem c.value
next

tu peux bricoler la nautre de ta plage selon toutes les
consfigurations




possibles pour un objet range

A+



Bonjour,
Je voudrais faire afficher dans une listbox plusieurs lignes qui ne
se





suivent pas.
Je définis la valeur de ces lignes dans une boucle for to next

liste.RowSource = Range(Cells(row, 1), Cells(row, 3))

Je ne sais pas trop comment m'en sortir.
Pouvez-vous m'aider ?
Merci