OVH Cloud OVH Cloud

ListBox et Array : renvoyer l'indice de la cellule selectionnee

8 réponses
Avatar
tictok
Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et un
autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1. TABLEAU2)
dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3)=
....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher, il
faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)

8 réponses

Avatar
michdenis
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox. Et tu fais comme ceci :

Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



"tictok" a écrit dans le message de news:
Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et un
autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1. TABLEAU2)
dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher, il
faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)
Avatar
tictok
Chaque tableau ne contient qu'une ligne de donnes. Donc une dimension.
Je vais essayer ton transpose et je dis si ca marche.
Merci !

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox.
Et tu fais comme ceci :


Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher,
il

faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)





Avatar
tictok
Re.
J'ai essaye et ca ne marche pas.
Me.Listbox1.List = Tableau1 -->Erreur 381
Me.Listbox1.List = Application.Transpose(Tableau1) -->Erreur 381

je reprecise que je cree ces tableaux dans un module et que les remplissage
des listes se font dans le UserForm_Initialize().

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox.
Et tu fais comme ceci :


Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher,
il

faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)





Avatar
michdenis
Bonjour tictok,

je reprecise que je cree ces tableaux dans un module et que les remplissage
des listes se font dans le UserForm_Initialize().

**** tu dois alors déclarer tes variables "tableau" dans le haut d'un module standard comme ceci

Public Tableau1()
Public Tableau2()

P.S. Tu ne dois pas déclarer tes tableaux au niveau de la procédure seulement dans le haut du module...


Salutations!


"tictok" a écrit dans le message de news:
Re.
J'ai essaye et ca ne marche pas.
Me.Listbox1.List = Tableau1 -->Erreur 381
Me.Listbox1.List = Application.Transpose(Tableau1) -->Erreur 381


"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox.
Et tu fais comme ceci :


Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher,
il

faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)





Avatar
michdenis
J'allais oublié ... assure-toi que tes tableaux ont été définis avant d'appeler ton formulaire ... sinon comment veux-tu
que cela fonctionne ?


Salutations!


"tictok" a écrit dans le message de news:
Re.
J'ai essaye et ca ne marche pas.
Me.Listbox1.List = Tableau1 -->Erreur 381
Me.Listbox1.List = Application.Transpose(Tableau1) -->Erreur 381

je reprecise que je cree ces tableaux dans un module et que les remplissage
des listes se font dans le UserForm_Initialize().

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox.
Et tu fais comme ceci :


Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher,
il

faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)





Avatar
tictok
Finalement, je vais creer mon tableau dans le UserForm_Initialize (le seul
probleme est qu'il sera tres long ...).
Et tes deux methodes marchent.

Par contre, saurais tu m'aider sur l'indice de l'element du tableau
selectionne ?

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles listbox.
Et tu fais comme ceci :


Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne, et
ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton Chercher,
il

faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)





Avatar
tictok
Dans mon Userform_Init(), je fais un Call MaProcedure.
Donc, pas de probleme. Merci pour le Public,c'est ce que je cherchais !


"michdenis" escreveu na mensagem
news:#9Bg#
J'allais oublié ... assure-toi que tes tableaux ont été définis avant
d'appeler ton formulaire ... sinon comment veux-tu

que cela fonctionne ?


Salutations!


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

Re.
J'ai essaye et ca ne marche pas.
Me.Listbox1.List = Tableau1 -->Erreur 381
Me.Listbox1.List = Application.Transpose(Tableau1) -->Erreur 381

je reprecise que je cree ces tableaux dans un module et que les
remplissage

des listes se font dans le UserForm_Initialize().

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles
listbox.


Et tu fais comme ceci :

Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne,
et


ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton
Chercher,


il
faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)










Avatar
tictok
Superbe michdenis !
Je ne connaissais pas ce Public, c'est extra. Par contre, dans un souci de
rigueur, il est preferable que je declare aussi le type (je sais lesquels
mettre).

"michdenis" escreveu na mensagem
news:#9Bg#
J'allais oublié ... assure-toi que tes tableaux ont été définis avant
d'appeler ton formulaire ... sinon comment veux-tu

que cela fonctionne ?


Salutations!


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

Re.
J'ai essaye et ca ne marche pas.
Me.Listbox1.List = Tableau1 -->Erreur 381
Me.Listbox1.List = Application.Transpose(Tableau1) -->Erreur 381

je reprecise que je cree ces tableaux dans un module et que les
remplissage

des listes se font dans le UserForm_Initialize().

"michdenis" escreveu na mensagem
news:
Bonjour Tictok,

Tu ne dois pas définir la propriété "RowSource" de tes contrôles
listbox.


Et tu fais comme ceci :

Pour un Tableau à 2 dimensions

Me.Listbox1.List = Tableau1
Me.ListBox2.List = Tableau2


Si tes variables "Tableau" n'ont qu'une dimension, utilise ceci :

Me.Listbox1.List = Application.Transpose(Tableau1)
Me.ListBox2.List = Application.Transpose(Tableau2)


Salutations!



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

Bonjour au Newsgroup !
J'ai cree un userform avec deux ListBox (LB1, LB2), un bouton Annuler et
un

autre Chercher.
Chaque ListBox doit prendre ses valeurs dans des Arrays (TABLEAU1.
TABLEAU2)

dimensionnés et definis dans un module .
Je voudrais :
- que la liste prenne les valeurs des tableaux. Comment faire ? Avec
"LB1.RowSource = TABLEAU1" ???
- recuperer l'indice de tableau correspondant a l'element selectionne,
et


ce pour chaque liste.

Exemple :
TABLEAU1(1)=Voiture
TABLEAU1(2)=Forum
TABLEAU1(3) > > ....
De meme pour TABLEAU2.
Si je selectionne Forum dans LB1et que je clique sur mon bouton
Chercher,


il
faudrait que j'obtienne "2", c'est a dire l'indice de tableau recherché.

Voila, j'espere que quelqu'un pourra m'aider :)
(Pour info je suis sous Excel2003 mais ca devra marcher sous Excel97)