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

Comment faire une fonction recherchev (type excel) dans access ?

4 réponses
Avatar
Jay
Bonjour,

J'ai un champ client sous forme de liste déroulante. Je souhaiterai que dans
un formulaire, lorsque je sélectionne une valeur pour ce champ, un autre
(Adresse) prenne la valeur correspondante.
Dans excel, je règle ça avec une fonction de recherche, mais dans access, je
ne trouve rien ....

Merci d'avance.

4 réponses

Avatar
Tisane
Bonjour Jay,

J'ai un champ client sous forme de liste déroulante. Je souhaiterai que
dans
un formulaire, lorsque je sélectionne une valeur pour ce champ, un autre
(Adresse) prenne la valeur correspondante.
Dans excel, je règle ça avec une fonction de recherche, mais dans access,
je
ne trouve rien ....


On considère que l'équivalent d'une RechercheV est l'instruction DLookUp().
RechDom() pour l'équivalent français dont la syntaxe est :
=RechDom("[Champ]";"[Table]";"Critère facultatif")

Toutefois, pour ce que tu veux faire, j'utiliserais plus simplement
Column(x).
Dans ta liste déroulante, ajoute le champ Adresse et mets la largeur de sa
colonne à 0.
Dans la source de la zone de texte qui doit afficher l'adresse, tape :
=NomDeTaListe.column(2)
Access compte à partir de 0 les colonnes d'une liste déroulante.
Donc si tu as un ID en 1re colonne, Client en 2e colonne et Adresse en 3e
colonne, Adresse est en fait considérée comme la colonne 2.

Heu... pas sûre d'être claire ;-)

--
Tisane

Avatar
Jay
Merci Tisane pour ta réponse.
Je suis un peu profane alors je vais essayer de te donner un peu plus d'info:

Table "Base client": Champs: "Nom"; "Adresse 1"; etc......

Les infos sont déjà toutes saisies
2ième table:

Table "Ordre de Tpt": Champs "Nom"; "Adresse 1"
J'ai mis ce champ en "Texte".

J'ai lié les tables (via les champs "Nom")

Où dois-je ajouter ce que tu m'as donné comme info ?

Merci encore.

"Tisane" wrote:

Bonjour Jay,

J'ai un champ client sous forme de liste déroulante. Je souhaiterai que
dans
un formulaire, lorsque je sélectionne une valeur pour ce champ, un autre
(Adresse) prenne la valeur correspondante.
Dans excel, je règle ça avec une fonction de recherche, mais dans access,
je
ne trouve rien ....


On considère que l'équivalent d'une RechercheV est l'instruction DLookUp().
RechDom() pour l'équivalent français dont la syntaxe est :
=RechDom("[Champ]";"[Table]";"Critère facultatif")

Toutefois, pour ce que tu veux faire, j'utiliserais plus simplement
Column(x).
Dans ta liste déroulante, ajoute le champ Adresse et mets la largeur de sa
colonne à 0.
Dans la source de la zone de texte qui doit afficher l'adresse, tape :
=NomDeTaListe.column(2)
Access compte à partir de 0 les colonnes d'une liste déroulante.
Donc si tu as un ID en 1re colonne, Client en 2e colonne et Adresse en 3e
colonne, Adresse est en fait considérée comme la colonne 2.

Heu... pas sûre d'être claire ;-)

--
Tisane





Avatar
Tisane

Je suis un peu profane alors je vais essayer de te donner un peu plus
d'info:
Table "Base client": Champs: "Nom"; "Adresse 1"; etc......
Les infos sont déjà toutes saisies
2ième table:
Table "Ordre de Tpt": Champs "Nom"; "Adresse 1"
J'ai mis ce champ en "Texte".
J'ai lié les tables (via les champs "Nom")
Où dois-je ajouter ce que tu m'as donné comme info ?


Oulala ! J'ai tout faux mais toi aussi ;-))
Je croyais que dans ton formulaire tu avais une liste déroulante et que tu
voulais simplement afficher les autres champs.
Toi, tu veux recopier le contenu d'un champ d'une table dans le même champ
d'une autre table, si j'ai compris cette fois.

Mais, avant d'aller plus loin, je te crois mal parti.
En base de données, on ne devrait JAMAIS répéter l'information. Autrement
dit, il n'est pas normal que tu aies 2 tables avec un contenu identique
(mêmes noms et adresses, en l'occurrence).
Et encore moins normal de relier des tables par un champ "nom" !
Les principales raisons :
- les noms peuvent avoir des homonymes
- le traitement de comparaison sur des noms est beaucoup plus long que sur
un numéro automatique
Enfin, s'il est encore temps, évite d'utiliser le libellé Nom qui fait
partie des mots réservés.

Pour résumé, tu devrais avoir une table T_Clients (pas "base clients", la
base contient des tables).
Cette T_Clients devrait contenir un Id_Client (numéro automatique par
exemple et clé primaire), Nom_Client, Adresse (je passe les détails
Code_Postal, Ville, etc.)
Tu ajoutes une table T_Ordre_de_Tpt (?), qui elle, contiendra un
Id_Ordre_de_Tpt et l'Id_Client, si un Ordre_de_Tpt n'a qu'un client associé
(je ne sais pas ce que c'est).
La seule répétition (redondance) sera le Id_Client, mais pas son nom ni
adresse.

Mais l'objectif n'est pas de faire un cours ici.
Tu trouveras de l'info dans les pages suivantes :

"La normalisation - Introduction"
http://www.3stone.be/access/articles.php?lng=fr&pg"1

"Access - Les Bases"
http://mhubiche.developpez.com/Access/cours/bases/

Tu peux également visionner les didacticiels de cette adresse :
"Cours Access"
http://office.microsoft.com/fr-fr/training/CR061829401036.aspx
et notamment le chapitre : "Organisation des données sous forme de tables"

--
Tisane


Bonjour Jay,

J'ai un champ client sous forme de liste déroulante. Je souhaiterai que
dans
un formulaire, lorsque je sélectionne une valeur pour ce champ, un
autre
(Adresse) prenne la valeur correspondante.
Dans excel, je règle ça avec une fonction de recherche, mais dans
access,
je
ne trouve rien ....


On considère que l'équivalent d'une RechercheV est l'instruction
DLookUp().
RechDom() pour l'équivalent français dont la syntaxe est :
=RechDom("[Champ]";"[Table]";"Critère facultatif")

Toutefois, pour ce que tu veux faire, j'utiliserais plus simplement
Column(x).
Dans ta liste déroulante, ajoute le champ Adresse et mets la largeur de
sa
colonne à 0.
Dans la source de la zone de texte qui doit afficher l'adresse, tape :
=NomDeTaListe.column(2)
Access compte à partir de 0 les colonnes d'une liste déroulante.
Donc si tu as un ID en 1re colonne, Client en 2e colonne et Adresse en 3e
colonne, Adresse est en fait considérée comme la colonne 2.

Heu... pas sûre d'être claire ;-)

--
Tisane





Avatar
Jay
Je vois que j'ai enormément de choses à apprendre !!!

Merci beaucoup d'avoir pris le temps, c'est très sympa.

Have a nice life .... !



"Tisane" wrote:


Je suis un peu profane alors je vais essayer de te donner un peu plus
d'info:
Table "Base client": Champs: "Nom"; "Adresse 1"; etc......
Les infos sont déjà toutes saisies
2ième table:
Table "Ordre de Tpt": Champs "Nom"; "Adresse 1"
J'ai mis ce champ en "Texte".
J'ai lié les tables (via les champs "Nom")
Où dois-je ajouter ce que tu m'as donné comme info ?


Oulala ! J'ai tout faux mais toi aussi ;-))
Je croyais que dans ton formulaire tu avais une liste déroulante et que tu
voulais simplement afficher les autres champs.
Toi, tu veux recopier le contenu d'un champ d'une table dans le même champ
d'une autre table, si j'ai compris cette fois.

Mais, avant d'aller plus loin, je te crois mal parti.
En base de données, on ne devrait JAMAIS répéter l'information. Autrement
dit, il n'est pas normal que tu aies 2 tables avec un contenu identique
(mêmes noms et adresses, en l'occurrence).
Et encore moins normal de relier des tables par un champ "nom" !
Les principales raisons :
- les noms peuvent avoir des homonymes
- le traitement de comparaison sur des noms est beaucoup plus long que sur
un numéro automatique
Enfin, s'il est encore temps, évite d'utiliser le libellé Nom qui fait
partie des mots réservés.

Pour résumé, tu devrais avoir une table T_Clients (pas "base clients", la
base contient des tables).
Cette T_Clients devrait contenir un Id_Client (numéro automatique par
exemple et clé primaire), Nom_Client, Adresse (je passe les détails
Code_Postal, Ville, etc.)
Tu ajoutes une table T_Ordre_de_Tpt (?), qui elle, contiendra un
Id_Ordre_de_Tpt et l'Id_Client, si un Ordre_de_Tpt n'a qu'un client associé
(je ne sais pas ce que c'est).
La seule répétition (redondance) sera le Id_Client, mais pas son nom ni
adresse.

Mais l'objectif n'est pas de faire un cours ici.
Tu trouveras de l'info dans les pages suivantes :

"La normalisation - Introduction"
http://www.3stone.be/access/articles.php?lng=fr&pg"1

"Access - Les Bases"
http://mhubiche.developpez.com/Access/cours/bases/

Tu peux également visionner les didacticiels de cette adresse :
"Cours Access"
http://office.microsoft.com/fr-fr/training/CR061829401036.aspx
et notamment le chapitre : "Organisation des données sous forme de tables"

--
Tisane


Bonjour Jay,

J'ai un champ client sous forme de liste déroulante. Je souhaiterai que
dans
un formulaire, lorsque je sélectionne une valeur pour ce champ, un
autre
(Adresse) prenne la valeur correspondante.
Dans excel, je règle ça avec une fonction de recherche, mais dans
access,
je
ne trouve rien ....


On considère que l'équivalent d'une RechercheV est l'instruction
DLookUp().
RechDom() pour l'équivalent français dont la syntaxe est :
=RechDom("[Champ]";"[Table]";"Critère facultatif")

Toutefois, pour ce que tu veux faire, j'utiliserais plus simplement
Column(x).
Dans ta liste déroulante, ajoute le champ Adresse et mets la largeur de
sa
colonne à 0.
Dans la source de la zone de texte qui doit afficher l'adresse, tape :
=NomDeTaListe.column(2)
Access compte à partir de 0 les colonnes d'une liste déroulante.
Donc si tu as un ID en 1re colonne, Client en 2e colonne et Adresse en 3e
colonne, Adresse est en fait considérée comme la colonne 2.

Heu... pas sûre d'être claire ;-)

--
Tisane