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

Controle désigné par une variable : Syntaxe ?

5 réponses
Avatar
amphi
Le code :
Forms![FFF].AAA.Value =3D VVV
permet de donner au controle "AAA" du formulaire "FFF" la valeur VVV
(string).

Quelle syntaxe permettrait de mettre pour le nom du controle AAA une
variable ?
Ceci afin de g=E9rer plusieurs controles par leur nom sans r=E9-=E9crire
le code pour chaque...
Parce que si AAA est bien une variable d=E9clar=E9e, le "bog" demande
n=E9ammoins quel est le controle AAA !
Ca doit =EAtre fort simple, mais je cherche depuis des jours...
Merci d'avance aux experts

5 réponses

Avatar
Jessy Sempere [MVP]
Re,

Je te l'avais dit dans ton premier post...
Forms("FFF").Controls(AAA)

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"amphi" a écrit dans le message news:

Le code :
Forms![FFF].AAA.Value = VVV
permet de donner au controle "AAA" du formulaire "FFF" la valeur VVV
(string).

Quelle syntaxe permettrait de mettre pour le nom du controle AAA une
variable ?
Ceci afin de gérer plusieurs controles par leur nom sans ré-écrire
le code pour chaque...
Parce que si AAA est bien une variable déclarée, le "bog" demande
néammoins quel est le controle AAA !
Ca doit être fort simple, mais je cherche depuis des jours...
Merci d'avance aux experts
Avatar
amphi
Merci jessy SEMPERE,
cependant cette syntaxe ne produit qu'une erreur 2465
produite par l'objet... ce que je ne sais pas décrypter.
Pourtant un Debug.Print juste avant la ligne me donne bien la valeur de
la variable que je souhaite utiliser dans cette commande...
merci encore
Avatar
Jessy Sempere [MVP]
Re,

Bon j'ai relu tes explications complémentaires mais j'ai quand même
du mal à suivre... ;-))

Peux-tu prendre un exemple concret de ce que tu as, ce que tu veux
avec le code que tu utilises pour essayer de le faire.

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"amphi" a écrit dans le message news:

Merci jessy SEMPERE,
cependant cette syntaxe ne produit qu'une erreur 2465
produite par l'objet... ce que je ne sais pas décrypter.
Pourtant un Debug.Print juste avant la ligne me donne bien la valeur de
la variable que je souhaite utiliser dans cette commande...
merci encore
Avatar
amphi
Re, et re-merci de t'intéresser à cette question.
Je vais essayer d'être plus clair.
Pour alimenter mes tables, j'ai construit un formulaire "saisie" avec
des controles à "remplir".
par exemple le controle AAA est à remplir avec des noms de personnes.
De nombreuses informations reviennent souvent, je ne veux pas les taper
x fois. Par exemple, le nom d'une personne (par ex Claude).
J'ai donc construit un 2è formulaire "data" (sans table), avec
seulement des controles txt pour chaque donnée fréquente.
Ces controles portent le nom de la donnée cherchée ( par exemple je
dois acquérir le nom de Claude dans de nombreux enregistrements, j'ai
donc un controle nommé "Claude" dans le formulaire "data").
En cliquant dessus, je récupère son nom (ctl.Name) que je mets dans
une variable VVV.
Il suffit ensuite de donner au controle AAA du formulaire "Saisie" la
valeur de la variable VVV.
C'est là que je suis bloqué : Comment faire passer au controle AAA du
formulaire "Saisie"
la valeur de la variable VVV issue du nom du controle cliqué du
formulaire "data",
et ce, quel que soit ce controle.
Avec un nom précis, ça marche très bien.
mais avec la variable au lieu du nom, je n'y arrive pas.

L'ergonomie recherchée, c'est :
1. Pour un controle "saisie" à remplir, ouvrir un autre formulaire
"data" par double-clic sur la ligne à remplir
2. Dans le formulaire "data" cliquer sur le controle portant le nom de
la donnée cherchée, refermer le formulaire
3. et hop ! le controle "saisie" est garni de la valeur de la donnée
recherchée
Tout ça sans écrire le même code pour chaque controle, comme j'avais
fait pour tester au départ.
Et ça marche si on écrit 50 fois le même code pour 50 données...
Je pensais donc utiliser la formule :
Forms![NomFormulaire].NomControle.Value = variable
pour rendre la chose possible quel que soit les controles cliqués dans
"Saisie" et dans "data"
Il y a sûrement une méthode adaptée, mais je suis self-made access,
plein de lacunes...
Alors, d'autant plus merci d'avance
Avatar
Jessy Sempere [MVP]
Re,

Ok, je comprends mieux...
Tu peux faire par exemple :
Sur l'évènement Double Click de tes zones à remplir dans ton formulaire
"Saisie", tu mets le code suivant :
DoCmd.OpenForm "data", acNormal, , , , , Me.ActiveControl.Name

Ensuite dans ton formulaire "data", tu places sur l'évènement double click
de tes contrôles, le code suivant :
Dim strValue As String
strValue = Me.ActiveControl.Name
Forms("Saisie").Controls(OpenArgs) = strValue
DoCmd.Close

Je pense que ça doit correspondre plus ou moins à ce que
tu souhaites faire...

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"amphi" a écrit dans le message news:

Re, et re-merci de t'intéresser à cette question.
Je vais essayer d'être plus clair.
Pour alimenter mes tables, j'ai construit un formulaire "saisie" avec
des controles à "remplir".
par exemple le controle AAA est à remplir avec des noms de personnes.
De nombreuses informations reviennent souvent, je ne veux pas les taper
x fois. Par exemple, le nom d'une personne (par ex Claude).
J'ai donc construit un 2è formulaire "data" (sans table), avec
seulement des controles txt pour chaque donnée fréquente.
Ces controles portent le nom de la donnée cherchée ( par exemple je
dois acquérir le nom de Claude dans de nombreux enregistrements, j'ai
donc un controle nommé "Claude" dans le formulaire "data").
En cliquant dessus, je récupère son nom (ctl.Name) que je mets dans
une variable VVV.
Il suffit ensuite de donner au controle AAA du formulaire "Saisie" la
valeur de la variable VVV.
C'est là que je suis bloqué : Comment faire passer au controle AAA du
formulaire "Saisie"
la valeur de la variable VVV issue du nom du controle cliqué du
formulaire "data",
et ce, quel que soit ce controle.
Avec un nom précis, ça marche très bien.
mais avec la variable au lieu du nom, je n'y arrive pas.

L'ergonomie recherchée, c'est :
1. Pour un controle "saisie" à remplir, ouvrir un autre formulaire
"data" par double-clic sur la ligne à remplir
2. Dans le formulaire "data" cliquer sur le controle portant le nom de
la donnée cherchée, refermer le formulaire
3. et hop ! le controle "saisie" est garni de la valeur de la donnée
recherchée
Tout ça sans écrire le même code pour chaque controle, comme j'avais
fait pour tester au départ.
Et ça marche si on écrit 50 fois le même code pour 50 données...
Je pensais donc utiliser la formule :
Forms![NomFormulaire].NomControle.Value = variable
pour rendre la chose possible quel que soit les controles cliqués dans
"Saisie" et dans "data"
Il y a sûrement une méthode adaptée, mais je suis self-made access,
plein de lacunes...
Alors, d'autant plus merci d'avance