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

modifier une zone de liste modifiable via sa clé???

7 réponses
Avatar
Alain Bourgeois
Chers tous,


je travaille sous Access 2K fr, j'ai un contrôle de type "zone de liste
modifiable", indépendant, dont les valeurs viennent de la requête:
SELECT ID, Nom & " " & prenom as expr1 From Adresses Order By nom,
prenom

La colonne clé (ID) est cachée, il se peut qu'il y aie des doublons sur
le nom et prénom.

J'aimerais dans certains cas positionner la valeur de la liste sur une
clé déterminée (ID = 5 dans cet exemple).
Malheureusement:
MyList.Value=5
->N'a aucun effet sur le nom affiché,
MyList=5
->N'a aucun effet sur le nom affiché, même suivi d'un MyList.Refresh et
d'un MyList.Requery.


La seule manière que j'aie trouvée est d'exécuter le code suivant:
Dim r as recordset, s as string
Set r=currentdb.openrecordset("SELECT Nom & " " & prenom as expr1 From
Adresses where id=5")
r.MoveFirst
s=r!expr1
r.close
MyList.Value=s
MyList.Value=5 'est utile au cas où plusieurs valeurs peuvent
correspondre au même nom/prénom.


C'est un abominable chipotage qui fait que si je change l'expression
(rajout du code postal par exemple) je dois changer mon code.
Je n'ai trouvé nulle part dans l'aide une manière plus maintenable de le
faire.
N'y a-t'il pas un moyen plus efficace pour arriver à sélectionner une
valeur d'une liste modifiable par code?

PS: il y a 3000 lignes, donc parcourir la liste avec un for i ... next
et tester sur MyList.Column(0,i) ne serait vraiment pas efficace.

Merci de votre aide,
Alain Bourgeois
www.self-mail.com
bk332951@skynet.be

PS2: si vous pouviez mettre mon e-mail en copie de votre réponse, ce
serait sympa.

7 réponses

Avatar
3stone
Salut,

"Alain Bourgeois"
je travaille sous Access 2K fr, j'ai un contrôle de type "zone de liste
modifiable", indépendant, dont les valeurs viennent de la requête:
SELECT ID, Nom & " " & prenom as expr1 From Adresses Order By nom,
prenom

La colonne clé (ID) est cachée, il se peut qu'il y aie des doublons sur
le nom et prénom.

J'aimerais dans certains cas positionner la valeur de la liste sur une
clé déterminée (ID = 5 dans cet exemple).




MaListe.ItemData(5)


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
3stone
re,

"Alain Bourgeois"
je travaille sous Access 2K fr, j'ai un contrôle de type "zone de liste
modifiable", indépendant, dont les valeurs viennent de la requête:
SELECT ID, Nom & " " & prenom as expr1 From Adresses Order By nom,
prenom

La colonne clé (ID) est cachée, il se peut qu'il y aie des doublons sur
le nom et prénom.

J'aimerais dans certains cas positionner la valeur de la liste sur une
clé déterminée (ID = 5 dans cet exemple).



Après relecture... ;-))

Bizarre ton souhait de te positionner sur un certain ID dans une liste indépendante...

De plus, tu dis qu'il y a des doublons... dans ce cas, comment peut tu savoir
quelle "ligne" est la bonne après une recherche ?

En général, une liste indépendante sert à positionner le formulaire, selon la liste
et non l'inverse. Encore faut-il suffissement de champs dans la liste pour
pouvoir distinguer "Durant Paul" de "Durant Paul"

Ma réponse précédante positionnait sur la 5ème ligne et non 5ème ID


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Alain Bourgeois
Simplement, parce que l'utilisateur a sur le formulaire un bouton qui ouvre un autre
formulaire dans lequel il peut faire des recherches pour sélectionner la bonne valeur.
Il sélectionne une personne dans cet autre formulaire et j'ai donc l'ID de la personne.Il
se peut qu'il y aie des doubles au niveau du nom (mais pas au niveau de l'ID qui est la
clé primaire). Exemple: un Joseph Dupont habitant à Bxl et l'autre à Paris, et deux Joseph
Dupont apparaissent dans la liste modifiable, associés à un ID différent.

J'aimerais positionner la valeur de la liste modifiable avec la valeur choisie dans le
formulaire de recherche.

Je trouve vraiment pas ça tordu: si c'était une zone de liste modifiable basée sur un
champs numérique (colonne liée), il affiche directement le texte basé sur la valeur.
Malheureusement, si c'est un contrôle indépendant (avec la même requête sous-jacente), ce
n'est pas si simple, ce qui est relativement étonnant.


Alain
3stone wrote:

re,

"Alain Bourgeois"
je travaille sous Access 2K fr, j'ai un contrôle de type "zone de liste
modifiable", indépendant, dont les valeurs viennent de la requête:
SELECT ID, Nom & " " & prenom as expr1 From Adresses Order By nom,
prenom

La colonne clé (ID) est cachée, il se peut qu'il y aie des doublons sur
le nom et prénom.

J'aimerais dans certains cas positionner la valeur de la liste sur une
clé déterminée (ID = 5 dans cet exemple).


Après relecture... ;-))

Bizarre ton souhait de te positionner sur un certain ID dans une liste indépendante...

De plus, tu dis qu'il y a des doublons... dans ce cas, comment peut tu savoir
quelle "ligne" est la bonne après une recherche ?

En général, une liste indépendante sert à positionner le formulaire, selon la liste
et non l'inverse. Encore faut-il suffissement de champs dans la liste pour
pouvoir distinguer "Durant Paul" de "Durant Paul"

Ma réponse précédante positionnait sur la 5ème ligne et non 5ème ID

--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------



Avatar
3stone
Salut,

"Alain Bourgeois"
Simplement, parce que l'utilisateur a sur le formulaire un bouton qui ouvre un autre
formulaire dans lequel il peut faire des recherches pour sélectionner la bonne valeur.
Il sélectionne une personne dans cet autre formulaire et j'ai donc l'ID de la personne.Il
se peut qu'il y aie des doubles au niveau du nom (mais pas au niveau de l'ID qui est la
clé primaire). Exemple: un Joseph Dupont habitant à Bxl et l'autre à Paris, et deux Joseph
Dupont apparaissent dans la liste modifiable, associés à un ID différent.

J'aimerais positionner la valeur de la liste modifiable avec la valeur choisie dans le
formulaire de recherche.

Je trouve vraiment pas ça tordu: si c'était une zone de liste modifiable basée sur un
champs numérique (colonne liée), il affiche directement le texte basé sur la valeur.
Malheureusement, si c'est un contrôle indépendant (avec la même requête sous-jacente), ce
n'est pas si simple, ce qui est relativement étonnant.


Si je comprends...
Vu que la liste est indépendante, c'est donc uniquement pour récupérer le nom de la personne...
On peut donc faire un simple Dlookup sur la table, puisque l'ID est connu.

LeNom = Dlookup("[Nom]","LaTable","[ChampID]=" & Me.ID

ou même les deux...

NomPrenom = Dlookup("[ChampNom] & ' ' & [ChampPrenom]","[LaTable]","[ChampID]=" & Me.ID


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Alain Bourgeois
Non, ce n'est pas pour récupérer le nom de la personne, c'est pour que la valeur de la liste
modifiable du premier formulaire soit correcte, pour 2 raisons:
1. Affichage correct à l'écran
2. D'autres boutons du formulaire principal (pas celui de recherche) se basent sur la valeur de la
zone de liste modifiable.

Alain

3stone wrote:

Salut,

"Alain Bourgeois"
Simplement, parce que l'utilisateur a sur le formulaire un bouton qui ouvre un autre
formulaire dans lequel il peut faire des recherches pour sélectionner la bonne valeur.
Il sélectionne une personne dans cet autre formulaire et j'ai donc l'ID de la personne.Il
se peut qu'il y aie des doubles au niveau du nom (mais pas au niveau de l'ID qui est la
clé primaire). Exemple: un Joseph Dupont habitant à Bxl et l'autre à Paris, et deux Joseph
Dupont apparaissent dans la liste modifiable, associés à un ID différent.

J'aimerais positionner la valeur de la liste modifiable avec la valeur choisie dans le
formulaire de recherche.

Je trouve vraiment pas ça tordu: si c'était une zone de liste modifiable basée sur un
champs numérique (colonne liée), il affiche directement le texte basé sur la valeur.
Malheureusement, si c'est un contrôle indépendant (avec la même requête sous-jacente), ce
n'est pas si simple, ce qui est relativement étonnant.


Si je comprends...
Vu que la liste est indépendante, c'est donc uniquement pour récupérer le nom de la personne...
On peut donc faire un simple Dlookup sur la table, puisque l'ID est connu.

LeNom = Dlookup("[Nom]","LaTable","[ChampID]=" & Me.ID

ou même les deux...

NomPrenom = Dlookup("[ChampNom] & ' ' & [ChampPrenom]","[LaTable]","[ChampID]=" & Me.ID

--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------



Avatar
Evaro
Bonjour,
Pourquoi n'ajoutes-tu pas un troisième champ discriminant dans ta zone de
Liste...?

SELECT ID, Nom & " " & prenom & ", " & Ville as expr1 From Adresses Order
By nom,
prenom

Et puis si tu risques encore d'avoir 2 DUPONT Joseph à Paris, ajoute
l'adresse...


--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm


"Alain Bourgeois" a écrit dans le message de
news:
Non, ce n'est pas pour récupérer le nom de la personne, c'est pour que
la valeur de la liste

modifiable du premier formulaire soit correcte, pour 2 raisons:
1. Affichage correct à l'écran
2. D'autres boutons du formulaire principal (pas celui de recherche) se
basent sur la valeur de la

zone de liste modifiable.

Alain

3stone wrote:

Salut,

"Alain Bourgeois"
Simplement, parce que l'utilisateur a sur le formulaire un bouton
qui ouvre un autre



formulaire dans lequel il peut faire des recherches pour
sélectionner la bonne valeur.



Il sélectionne une personne dans cet autre formulaire et j'ai donc
l'ID de la personne.Il



se peut qu'il y aie des doubles au niveau du nom (mais pas au niveau
de l'ID qui est la



clé primaire). Exemple: un Joseph Dupont habitant à Bxl et l'autre à
Paris, et deux Joseph



Dupont apparaissent dans la liste modifiable, associés à un ID
différent.




J'aimerais positionner la valeur de la liste modifiable avec la
valeur choisie dans le



formulaire de recherche.

Je trouve vraiment pas ça tordu: si c'était une zone de liste
modifiable basée sur un



champs numérique (colonne liée), il affiche directement le texte
basé sur la valeur.



Malheureusement, si c'est un contrôle indépendant (avec la même
requête sous-jacente), ce



n'est pas si simple, ce qui est relativement étonnant.


Si je comprends...
Vu que la liste est indépendante, c'est donc uniquement pour récupérer
le nom de la personne...


On peut donc faire un simple Dlookup sur la table, puisque l'ID est
connu.



LeNom = Dlookup("[Nom]","LaTable","[ChampID]=" & Me.ID

ou même les deux...

NomPrenom = Dlookup("[ChampNom] & ' ' &
[ChampPrenom]","[LaTable]","[ChampID]=" & Me.ID



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------






Avatar
Alain Bourgeois
Ca ne répond franchement pas à ma question! C'est si tordu de positionner une
zone de liste modifiable????

Evaro wrote:

Bonjour,
Pourquoi n'ajoutes-tu pas un troisième champ discriminant dans ta zone de
Liste...?

SELECT ID, Nom & " " & prenom & ", " & Ville as expr1 From Adresses Order
By nom,
prenom

Et puis si tu risques encore d'avoir 2 DUPONT Joseph à Paris, ajoute
l'adresse...

--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm

"Alain Bourgeois" a écrit dans le message de
news:
Non, ce n'est pas pour récupérer le nom de la personne, c'est pour que
la valeur de la liste

modifiable du premier formulaire soit correcte, pour 2 raisons:
1. Affichage correct à l'écran
2. D'autres boutons du formulaire principal (pas celui de recherche) se
basent sur la valeur de la

zone de liste modifiable.

Alain

3stone wrote:

Salut,

"Alain Bourgeois"
Simplement, parce que l'utilisateur a sur le formulaire un bouton
qui ouvre un autre



formulaire dans lequel il peut faire des recherches pour
sélectionner la bonne valeur.



Il sélectionne une personne dans cet autre formulaire et j'ai donc
l'ID de la personne.Il



se peut qu'il y aie des doubles au niveau du nom (mais pas au niveau
de l'ID qui est la



clé primaire). Exemple: un Joseph Dupont habitant à Bxl et l'autre à
Paris, et deux Joseph



Dupont apparaissent dans la liste modifiable, associés à un ID
différent.




J'aimerais positionner la valeur de la liste modifiable avec la
valeur choisie dans le



formulaire de recherche.

Je trouve vraiment pas ça tordu: si c'était une zone de liste
modifiable basée sur un



champs numérique (colonne liée), il affiche directement le texte
basé sur la valeur.



Malheureusement, si c'est un contrôle indépendant (avec la même
requête sous-jacente), ce



n'est pas si simple, ce qui est relativement étonnant.


Si je comprends...
Vu que la liste est indépendante, c'est donc uniquement pour récupérer
le nom de la personne...


On peut donc faire un simple Dlookup sur la table, puisque l'ID est
connu.



LeNom = Dlookup("[Nom]","LaTable","[ChampID]=" & Me.ID

ou même les deux...

NomPrenom = Dlookup("[ChampNom] & ' ' &
[ChampPrenom]","[LaTable]","[ChampID]=" & Me.ID



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------