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

Positionner une ligne d'une combobox (en V.B)

5 réponses
Avatar
John
Bonjour,

J'ai un formulaire sur lequel est une combobox,
dont les éléments ont déja été initialisés.
Mais je n'arrive pas à trouver comment sélectionner une
ligne précise pour l'affichage de la box, en VisualBasic.

Par exemple :

Le formulaire s'appelle "MyForm" et la box s'appelle "MyBox"
et cette box est remplie avec les 3 lignes { "un", "deux, "trois" }

En VB pour que la box affiche "deux" je devrais pouvoir écrire :
Form( "MyForm" ).quelquechose( "MyBox" ).autrechose = 1

J'ai tout essayé mais rien ne fonctionne ... au secours !

Quelqu'un sait-il comment s'y prendre ?

5 réponses

Avatar
Gloops
Bonjour,

Tout dépend de la valeur de la propriété BoundColumn.

Si c'est 0, la valeur à passer à la liste est le numéro de la ligne où
se trouve l'enregistrement visé.
Si c'est plus que 0, BoundColumn désigne le numéro de la colonne
retournée par la liste, c'est donc la valeur se trouvant dans cette
colonne qu'il faudra passer.

drpListe = 2 ' 2ème ligne, si drpListe.BoundColumn = 0

drpListe = "deux" 'ligne qui contient "deux", dans la première colonn e,
si drpListe.BoundColumn = 1


___________________________________
John a écrit, le 10/09/2012 18:52 :
Bonjour,

J'ai un formulaire sur lequel est une combobox,
dont les éléments ont déja été initialisés.
Mais je n'arrive pas à trouver comment sélectionner une
ligne précise pour l'affichage de la box, en VisualBasic.

Par exemple :

Le formulaire s'appelle "MyForm" et la box s'appelle "MyBox"
et cette box est remplie avec les 3 lignes { "un", "deux, "trois" }

En VB pour que la box affiche "deux" je devrais pouvoir écrire :
Form( "MyForm" ).quelquechose( "MyBox" ).autrechose = 1

J'ai tout essayé mais rien ne fonctionne ... au secours !

Quelqu'un sait-il comment s'y prendre ?


Avatar
John
"Gloops" :

Tout dépend de la valeur de la propriété BoundColumn.
Si c'est 0, la valeur à passer à la liste est le numéro de la ligne où se
trouve l'enregistrement visé.
Si c'est plus que 0, BoundColumn désigne le numéro de la colonne retournée
par la liste, c'est donc la valeur se trouvant dans cette colonne qu'il
faudra passer.
drpListe = 2 ' 2ème ligne, si drpListe.BoundColumn = 0
drpListe = "deux" 'ligne qui contient "deux", dans la première colonne, si
drpListe.BoundColumn = 1



Je comprends le principe d'indexage des colonnes,
mais ce que je recherche c'est l'écriture Visual Basic
( sous Access ) pour dire à la liste "MyBox"
du formulaire "MyForm" d'afficher la ligne numéro N.

C'est-à-dire, avec l'exemple ci-dessous, avec quoi je dois
remplacer le terme 'quelquechose' et le terme 'autrechose' :
Form( "MyForm" ).quelquechose( "MyBox" ).autrechose = 1

Si je comprends bien, pour afficher la N-iéme ligne :
drpListe.BoundColumn = N
d'accord, mais par quoi dois-je remplacer 'drpListe' ?

Ma liste s'appelle "MyBox". Dois-je faire ceci :
Form( "MyForm" ).quelquechose( "MyBox" ).BoundColumn = 1

Si oui, il me reste encore à touver par
quoi remplacer le terme 'quelquechose' ...






-------------------------------------------------
John a écrit, le 10/09/2012 18:52 :

J'ai un formulaire sur lequel est une combobox,
dont les éléments ont déja été initialisés.
Mais je n'arrive pas à trouver comment sélectionner une
ligne précise pour l'affichage de la box, en VisualBasic.

Par exemple :
Le formulaire s'appelle "MyForm" et la box s'appelle "MyBox"
et cette box est remplie avec les 3 lignes { "un", "deux, "trois" }
En VB pour que la box affiche "deux" je devrais pouvoir écrire :
Form( "MyForm" ).quelquechose( "MyBox" ).autrechose = 1

Quelqu'un sait-il comment s'y prendre ?
Avatar
Gloops
Tu as remplacé drpListe par MyBox, donc :

'supposant que Forms("MyForm").MyBox.BoundColumn = 0
'car c'est à toi de savoir si tu as des numéros à passer, ou des va leurs

Tu sélectionnes la première ligne par :
Forms("MyForm").MyBox = 1
___________________________________
John a écrit, le 11/09/2012 22:11 :
Ma liste s'appelle "MyBox". Dois-je faire ceci :
Form( "MyForm" ).quelquechose( "MyBox" ).BoundColumn = 1

Si oui, il me reste encore à touver par
quoi remplacer le terme 'quelquechose' ...
Avatar
John
"Gloops" :

Tu as remplacé drpListe par MyBox, donc :
'supposant que Forms("MyForm").MyBox.BoundColumn = 0
'car c'est à toi de savoir si tu as des numéros à passer, ou des valeurs
Tu sélectionnes la première ligne par :
Forms("MyForm").MyBox = 1




Aujourd'hui j'ai fini par trouver :

pour positionner la N-ième ligne de la liste "MyBox" :
Form( "MyForm" ).Controls("MyBox") = N

A l'inverse pour lire l'index de la ligne sélectionnée par l'utilisateur
N = Form( "MyForm" ).Controls("MyBox")

C'était trop simple ...

Merci "Gloops" !



John a écrit, le 11/09/2012 22:11 :
Ma liste s'appelle "MyBox". Dois-je faire ceci :
Form( "MyForm" ).quelquechose( "MyBox" ).BoundColumn = 1
Si oui, il me reste encore à touver par
quoi remplacer le terme 'quelquechose' ...
Avatar
Gloops
John a écrit, le 12/09/2012 18:12 :
Aujourd'hui j'ai fini par trouver :

pour positionner la N-ième ligne de la liste "MyBox" :
Form( "MyForm" ).Controls("MyBox") = N

A l'inverse pour lire l'index de la ligne sélectionnée par l'utilis ateur
N = Form( "MyForm" ).Controls("MyBox")

C'était trop simple ...

Merci "Gloops" !




Effectivement on peut écrire Controls("MyBox").

Est-ce que ça ne marche pas si tu mets juste Forms("MyForm").MyBox ?
ou Forms("MyForm")!MyBox ?

Sinon, pour être complet, on peut préciser que le nom du contrôle,
utilisé comme ça tout seul ou en relation avec son formulaire,
sous-entend de désigner la propriété par défaut, qui est Value.

Donc
Form
tiens, il n'y a pas un s, là ?
Je n'ai pas de quoi essayer mais je suis pris d'un doute ...

Form("MyForm").Controls("MyBox") = N

fonctionne en sous-entendant :
Form("MyForm").Controls("MyBox").Value = N

Et si c'est dans le module de MyForm (condition impérative certes),
essaie voir juste comme ça :

MyBox = N

Avoue que c'est plus sobre :)
ça sous-entend aussi tout le reste. Si tu ne préfixes pas le contrô le,
on le cherche dans le module en cours, et donc comme c'est le module
d'un formulaire, dans les contrôles du formulaire. C'est seulement une
fois qu'on ne l'a pas trouvé là qu'on commence à fouiller ailleurs ...

Et pareil pour la propriété, si tu ne la précises pas c'est la prop riété
par défaut, donc Value.

On sous-entend aussi que tout ça se passe dans la base de données en
cours, mais là, euh ... peut-être que je complique :)