Comment gérer des controles dont le nom est une variable ?
2 réponses
amphi
Bonjour =E0 tous !
y a -til moyen de d=E9signer un controle par un nom qui serait une
variable,
d'affecter ce nom =E0 une variable dont la valeur serait r=E9cup=E9rable
dans un champ d'un autre formulaire ? (ceci pour faciliter des saisies
r=E9p=E9titives)
En pratique : J'ai cr=E9=E9 un formulaire "Collection" avec n controles
textes.
A partir d'un formulaire "Saisie", j'ouvre le formulaire "Collection".
Le clic sur le controle ad hoc du formulaire "Collection" me permet de
passer son nom en variable (ctl.caption > ctl.name > strName),
et je voudrais que la variable (strName)devienne en retour le contenu
du champ (ctlSaisie) du formulaire "Saisie" rest=E9 ouvert pendant ce
temps.
Et l=E0 je coince, car le code
forms!Saisie!CtlSaisie.Value =3D strName
ne r=E9cup=E8re rien... Access demande quel est le champ "ctlSaisie" !
alors que =E7a marche bien avec chaque nom de champ tap=E9 en clair.
merci de votre aide,
je suis self-made access, and need help
CG
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jessy Sempere [MVP]
Bonjour
Je ne suis pas sûr d'avoir tout compris... Pour désigner une contrôle dont le nom est dans une variable, tu peux faire :
Dim strCtl as String strCtl = "TonControle" Me.Controls(strCtl)
@+ 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:
Bonjour à tous ! y a -til moyen de désigner un controle par un nom qui serait une variable, d'affecter ce nom à une variable dont la valeur serait récupérable dans un champ d'un autre formulaire ? (ceci pour faciliter des saisies répétitives)
En pratique : J'ai créé un formulaire "Collection" avec n controles textes. A partir d'un formulaire "Saisie", j'ouvre le formulaire "Collection". Le clic sur le controle ad hoc du formulaire "Collection" me permet de passer son nom en variable (ctl.caption > ctl.name > strName), et je voudrais que la variable (strName)devienne en retour le contenu du champ (ctlSaisie) du formulaire "Saisie" resté ouvert pendant ce temps. Et là je coince, car le code forms!Saisie!CtlSaisie.Value = strName ne récupère rien... Access demande quel est le champ "ctlSaisie" ! alors que ça marche bien avec chaque nom de champ tapé en clair. merci de votre aide, je suis self-made access, and need help CG
Bonjour
Je ne suis pas sûr d'avoir tout compris...
Pour désigner une contrôle dont le nom est dans une variable,
tu peux faire :
Dim strCtl as String
strCtl = "TonControle"
Me.Controls(strCtl)
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"amphi" <amphi@ch-pinel.fr> a écrit dans le message news:
1128328812.625599.145650@z14g2000cwz.googlegroups.com...
Bonjour à tous !
y a -til moyen de désigner un controle par un nom qui serait une
variable,
d'affecter ce nom à une variable dont la valeur serait récupérable
dans un champ d'un autre formulaire ? (ceci pour faciliter des saisies
répétitives)
En pratique : J'ai créé un formulaire "Collection" avec n controles
textes.
A partir d'un formulaire "Saisie", j'ouvre le formulaire "Collection".
Le clic sur le controle ad hoc du formulaire "Collection" me permet de
passer son nom en variable (ctl.caption > ctl.name > strName),
et je voudrais que la variable (strName)devienne en retour le contenu
du champ (ctlSaisie) du formulaire "Saisie" resté ouvert pendant ce
temps.
Et là je coince, car le code
forms!Saisie!CtlSaisie.Value = strName
ne récupère rien... Access demande quel est le champ "ctlSaisie" !
alors que ça marche bien avec chaque nom de champ tapé en clair.
merci de votre aide,
je suis self-made access, and need help
CG
Je ne suis pas sûr d'avoir tout compris... Pour désigner une contrôle dont le nom est dans une variable, tu peux faire :
Dim strCtl as String strCtl = "TonControle" Me.Controls(strCtl)
@+ 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:
Bonjour à tous ! y a -til moyen de désigner un controle par un nom qui serait une variable, d'affecter ce nom à une variable dont la valeur serait récupérable dans un champ d'un autre formulaire ? (ceci pour faciliter des saisies répétitives)
En pratique : J'ai créé un formulaire "Collection" avec n controles textes. A partir d'un formulaire "Saisie", j'ouvre le formulaire "Collection". Le clic sur le controle ad hoc du formulaire "Collection" me permet de passer son nom en variable (ctl.caption > ctl.name > strName), et je voudrais que la variable (strName)devienne en retour le contenu du champ (ctlSaisie) du formulaire "Saisie" resté ouvert pendant ce temps. Et là je coince, car le code forms!Saisie!CtlSaisie.Value = strName ne récupère rien... Access demande quel est le champ "ctlSaisie" ! alors que ça marche bien avec chaque nom de champ tapé en clair. merci de votre aide, je suis self-made access, and need help CG
amphi
Bonjour, je suis content d'avoir aussi vite un interlocuteur. Voici les détails de mon problème:
Dans un formulaire ("Saisie") dédié à la saisie, j'ai plusieurs champs à alimenter par des données que je ne veux pas taper mais choisir dans un autre formulaire ("data") par simple clic sur une zone de texte identifiée par un nom. Chaque champ de "Saisie" est doublecliquable avec le code suivant (par exemple le champ BA) ----------------------------------------------------------------- Private Sub BA_DblClick(Cancel As Integer)
Dim LigneActive As Control Dim NomLigneActive As String Dim NomPersonneActive Set LigneActive = Screen.ActiveControl NomLigneActive = LigneActive.Name
End Sub ------------------------------------------ Cela me permet de stocker le nom du champ de saisie concerné (ici "BA") et d'ouvrir le formulaire "Data" , qui comporte n controles texte dont je veux récupérer le nom dans le champ de saisie (par ex BA).
J'ai donc créé une fonction : -------------------------------------------- Public Function RetourValeurLigne(NomLigneActive As String, NomPersonneActive As String) As String Dim ValeurRetour As String 'Dim NomLigneActive As String 'Dim NomPersonneActive As String ValeurRetour = "Forms![Saisie]!" & NomLigneActive & ".Value = " & NomPersonneActive End Function ------------------------------------------- Cette fonction me retourne dans la variable NomPersonneActive le nom du controle texte cliqué. Il faut ensuite que ce nom devienne la valeur du champ de saisie, par exemple le controle BA du formulaire "Saisie".
J'appelle donc la fonction au moment du clic sur le data, par le code : ----------------------------------------------------- Private Sub Controle1_Click() Form![Controle1].SetFocus Dim NomPersonneActive As String Dim NomLigneActive As String Set ControlePersonneActif = Screen.ActiveControl NomPersonneActive = ControlePersonneActif.Name
Forms![Saisie].NomLigneActive.Value = NomPersonneActive DoCmd.Close acForm, "Data" End Sub ------------------------------------------------------------------- Résultat : Le controle (BA) du formulaire "Saisie" est bien identifié, la variable NomLigneActive prend la valeur du nom de ce controle. Le controle cliqué (Controle1) sur le formulaire "Saisie" est bien identifié, la variable NomPersonneActive prend la valeur du nom de ce controle.
Mais je n'arrive pas à générer le code permettant de donner au controle dont le nom est dans la variable NomLigneActive, la valeur contenue dans la variable NomPersonneActive... La formule Forms![Saisie].NomLigneActive.Value = NomPersonneActive me retourne " Champ inconnu"...
Voilà. Quand cela sera résolu, je pourrai en fait alimenter des champs de saisie par un simple clic sur un controle d'un formulaire, dont le nom remplira automatiquement le champ de saisie, quel qu'il soit... Je ne désespère pas, mais il me manque certainement de la méthode et de la syntaxe... Alors merci d'avance !
Bonjour,
je suis content d'avoir aussi vite un interlocuteur.
Voici les détails de mon problème:
Dans un formulaire ("Saisie") dédié à la saisie, j'ai plusieurs
champs à alimenter par des données que je ne veux pas taper mais
choisir dans un autre formulaire ("data") par simple clic sur une zone
de texte identifiée par un nom.
Chaque champ de "Saisie" est doublecliquable avec le code suivant (par
exemple le champ BA)
-----------------------------------------------------------------
Private Sub BA_DblClick(Cancel As Integer)
Dim LigneActive As Control
Dim NomLigneActive As String
Dim NomPersonneActive
Set LigneActive = Screen.ActiveControl
NomLigneActive = LigneActive.Name
End Sub
------------------------------------------
Cela me permet de stocker le nom du champ de saisie concerné (ici
"BA")
et d'ouvrir le formulaire "Data" , qui comporte n controles texte dont
je veux récupérer le nom dans le champ de saisie (par ex BA).
J'ai donc créé une fonction :
--------------------------------------------
Public Function RetourValeurLigne(NomLigneActive As String,
NomPersonneActive As String) As String
Dim ValeurRetour As String
'Dim NomLigneActive As String
'Dim NomPersonneActive As String
ValeurRetour = "Forms![Saisie]!" & NomLigneActive & ".Value = " &
NomPersonneActive
End Function
-------------------------------------------
Cette fonction me retourne dans la variable NomPersonneActive
le nom du controle texte cliqué.
Il faut ensuite que ce nom devienne la valeur du champ de saisie,
par exemple le controle BA du formulaire "Saisie".
J'appelle donc la fonction au moment du clic sur le data, par le code :
-----------------------------------------------------
Private Sub Controle1_Click()
Form![Controle1].SetFocus
Dim NomPersonneActive As String
Dim NomLigneActive As String
Set ControlePersonneActif = Screen.ActiveControl
NomPersonneActive = ControlePersonneActif.Name
Forms![Saisie].NomLigneActive.Value = NomPersonneActive
DoCmd.Close acForm, "Data"
End Sub
-------------------------------------------------------------------
Résultat :
Le controle (BA) du formulaire "Saisie" est bien identifié, la
variable NomLigneActive prend la valeur du nom de ce controle.
Le controle cliqué (Controle1) sur le formulaire "Saisie" est bien
identifié, la variable NomPersonneActive prend la valeur du nom de ce
controle.
Mais je n'arrive pas à générer le code permettant de donner
au controle dont le nom est dans la variable NomLigneActive,
la valeur contenue dans la variable NomPersonneActive...
La formule
Forms![Saisie].NomLigneActive.Value = NomPersonneActive
me retourne " Champ inconnu"...
Voilà. Quand cela sera résolu, je pourrai en fait alimenter des
champs de saisie par un simple clic sur un controle d'un formulaire,
dont le nom remplira automatiquement le champ de saisie, quel qu'il
soit...
Je ne désespère pas, mais il me manque certainement de la méthode et
de la syntaxe...
Alors merci d'avance !
Bonjour, je suis content d'avoir aussi vite un interlocuteur. Voici les détails de mon problème:
Dans un formulaire ("Saisie") dédié à la saisie, j'ai plusieurs champs à alimenter par des données que je ne veux pas taper mais choisir dans un autre formulaire ("data") par simple clic sur une zone de texte identifiée par un nom. Chaque champ de "Saisie" est doublecliquable avec le code suivant (par exemple le champ BA) ----------------------------------------------------------------- Private Sub BA_DblClick(Cancel As Integer)
Dim LigneActive As Control Dim NomLigneActive As String Dim NomPersonneActive Set LigneActive = Screen.ActiveControl NomLigneActive = LigneActive.Name
End Sub ------------------------------------------ Cela me permet de stocker le nom du champ de saisie concerné (ici "BA") et d'ouvrir le formulaire "Data" , qui comporte n controles texte dont je veux récupérer le nom dans le champ de saisie (par ex BA).
J'ai donc créé une fonction : -------------------------------------------- Public Function RetourValeurLigne(NomLigneActive As String, NomPersonneActive As String) As String Dim ValeurRetour As String 'Dim NomLigneActive As String 'Dim NomPersonneActive As String ValeurRetour = "Forms![Saisie]!" & NomLigneActive & ".Value = " & NomPersonneActive End Function ------------------------------------------- Cette fonction me retourne dans la variable NomPersonneActive le nom du controle texte cliqué. Il faut ensuite que ce nom devienne la valeur du champ de saisie, par exemple le controle BA du formulaire "Saisie".
J'appelle donc la fonction au moment du clic sur le data, par le code : ----------------------------------------------------- Private Sub Controle1_Click() Form![Controle1].SetFocus Dim NomPersonneActive As String Dim NomLigneActive As String Set ControlePersonneActif = Screen.ActiveControl NomPersonneActive = ControlePersonneActif.Name
Forms![Saisie].NomLigneActive.Value = NomPersonneActive DoCmd.Close acForm, "Data" End Sub ------------------------------------------------------------------- Résultat : Le controle (BA) du formulaire "Saisie" est bien identifié, la variable NomLigneActive prend la valeur du nom de ce controle. Le controle cliqué (Controle1) sur le formulaire "Saisie" est bien identifié, la variable NomPersonneActive prend la valeur du nom de ce controle.
Mais je n'arrive pas à générer le code permettant de donner au controle dont le nom est dans la variable NomLigneActive, la valeur contenue dans la variable NomPersonneActive... La formule Forms![Saisie].NomLigneActive.Value = NomPersonneActive me retourne " Champ inconnu"...
Voilà. Quand cela sera résolu, je pourrai en fait alimenter des champs de saisie par un simple clic sur un controle d'un formulaire, dont le nom remplira automatiquement le champ de saisie, quel qu'il soit... Je ne désespère pas, mais il me manque certainement de la méthode et de la syntaxe... Alors merci d'avance !