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

Nom du controle parent a partir d'un sous-formulaire

6 réponses
Avatar
BCS
Bonjour,
J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
Le controle sous-formulaire se nomme "fsub01"
Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
trouver le nom du controle qui le contient dans le formulaire parent?
Pour essayer d'être plus clair, comment puis-je trouver le nom du contrôle
"fsub01" à partir d'un code VBA placé dans le sous-formulaire?

Merci pour votre aide.

Chris

6 réponses

Avatar
Hugues
Bonjour,
il suffit d'utiliser la propriété "parent"

Me.parent.name

notez que de cette façon on accède aussi aux controles du formulaire parent

me.parent![mon_controle]

"BCS" a écrit dans le message de
news:
Bonjour,
J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
Le controle sous-formulaire se nomme "fsub01"
Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
trouver le nom du controle qui le contient dans le formulaire parent?
Pour essayer d'être plus clair, comment puis-je trouver le nom du contrôle
"fsub01" à partir d'un code VBA placé dans le sous-formulaire?

Merci pour votre aide.

Chris


Avatar
BCS
Bonjour,

Merci de la réponse mais il ne s'agit pas de ça. Je ne recherche pas à
connaitre le nom du formulaire parent mais le nom du controle, dans le
formulaire parent, qui contient le sous-formulaire. Le tout à partir d'un
code VBA placé dans le sous-formulaire

Merci d'avance,

"Hugues" wrote:

Bonjour,
il suffit d'utiliser la propriété "parent"

Me.parent.name

notez que de cette façon on accède aussi aux controles du formulaire parent

me.parent![mon_controle]

"BCS" a écrit dans le message de
news:
> Bonjour,
> J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
> Le controle sous-formulaire se nomme "fsub01"
> Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
> trouver le nom du controle qui le contient dans le formulaire parent?
> Pour essayer d'être plus clair, comment puis-je trouver le nom du contrôle
> "fsub01" à partir d'un code VBA placé dans le sous-formulaire?
>
> Merci pour votre aide.
>
> Chris





Avatar
Gilles MOUGNOZ
Bonjour, BCS

Une solution pourrait être de retourner le nom du contrôle actif du
formulaire parent :
Me.Parent.ActiveControl.Name
Ce code étant appelé lors d'un événement du sous-formulaire, le contrôle
sous-formulaire devrait donc être le contrôle actif.

--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"BCS" a écrit :
Bonjour,
Merci de la réponse mais il ne s'agit pas de ça. Je ne recherche pas à
connaitre le nom du formulaire parent mais le nom du controle, dans le
formulaire parent, qui contient le sous-formulaire. Le tout à partir d'un
code VBA placé dans le sous-formulaire
Merci d'avance,
"Hugues" wrote:
Bonjour,
il suffit d'utiliser la propriété "parent"
Me.parent.name
notez que de cette façon on accède aussi aux controles du formulaire
parent
me.parent![mon_controle]
"BCS" a écrit :
> Bonjour,
> J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
> Le controle sous-formulaire se nomme "fsub01"
> Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
> trouver le nom du controle qui le contient dans le formulaire parent?
> Pour essayer d'être plus clair, comment puis-je trouver le nom du
> contrôle
> "fsub01" à partir d'un code VBA placé dans le sous-formulaire?
> Merci pour votre aide.
> Chris




Avatar
BCS
Bonjour,

Merci pour cette réponse.
C'est presque bon mais le soucis de l'activecontrol c'est que cela ne
fonctionne pas à l'ouverture de mon sous-formulaire. De plus l'activecontrol
n'est pas toujours celui qu'on croit ;-) si je mets 3 sous-formulaires dans
mon formulaire parent, à l'ouverture seul le premier sous-formulaire sera
correct mais pas les autres...

Merci qd mm, je continue à creuser de mon côté aussi.
Si je ne trouve pas, cela passera par une table temporaire... :s

A+

"Gilles MOUGNOZ" wrote:

Bonjour, BCS

Une solution pourrait être de retourner le nom du contrôle actif du
formulaire parent :
Me.Parent.ActiveControl.Name
Ce code étant appelé lors d'un événement du sous-formulaire, le contrôle
sous-formulaire devrait donc être le contrôle actif.

--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"BCS" a écrit :
> Bonjour,
> Merci de la réponse mais il ne s'agit pas de ça. Je ne recherche pas à
> connaitre le nom du formulaire parent mais le nom du controle, dans le
> formulaire parent, qui contient le sous-formulaire. Le tout à partir d'un
> code VBA placé dans le sous-formulaire
> Merci d'avance,
> "Hugues" wrote:
>> Bonjour,
>> il suffit d'utiliser la propriété "parent"
>> Me.parent.name
>> notez que de cette façon on accède aussi aux controles du formulaire
>> parent
>> me.parent![mon_controle]
>> "BCS" a écrit :
>> > Bonjour,
>> > J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
>> > Le controle sous-formulaire se nomme "fsub01"
>> > Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
>> > trouver le nom du controle qui le contient dans le formulaire parent?
>> > Pour essayer d'être plus clair, comment puis-je trouver le nom du
>> > contrôle
>> > "fsub01" à partir d'un code VBA placé dans le sous-formulaire?
>> > Merci pour votre aide.
>> > Chris





Avatar
Hugues
BCS a écrit :
Bonjour,

Merci pour cette réponse.
C'est presque bon mais le soucis de l'activecontrol c'est que cela ne
fonctionne pas à l'ouverture de mon sous-formulaire. De plus l'activecontrol
n'est pas toujours celui qu'on croit ;-) si je mets 3 sous-formulaires dans
mon formulaire parent, à l'ouverture seul le premier sous-formulaire sera
correct mais pas les autres...

Merci qd mm, je continue à creuser de mon côté aussi.
Si je ne trouve pas, cela passera par une table temporaire... :s

A+

"Gilles MOUGNOZ" wrote:


Bonjour, BCS

Une solution pourrait être de retourner le nom du contrôle actif du
formulaire parent :
Me.Parent.ActiveControl.Name
Ce code étant appelé lors d'un événement du sous-formulaire, le contrôle
sous-formulaire devrait donc être le contrôle actif.

--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
"BCS" a écrit :

Bonjour,
Merci de la réponse mais il ne s'agit pas de ça. Je ne recherche pas à
connaitre le nom du formulaire parent mais le nom du controle, dans le
formulaire parent, qui contient le sous-formulaire. Le tout à partir d'un
code VBA placé dans le sous-formulaire
Merci d'avance,
"Hugues" wrote:

Bonjour,
il suffit d'utiliser la propriété "parent"
Me.parent.name
notez que de cette façon on accède aussi aux controles du formulaire
parent
me.parent![mon_controle]
"BCS" a écrit :

Bonjour,
J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
Le controle sous-formulaire se nomme "fsub01"
Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
trouver le nom du controle qui le contient dans le formulaire parent?
Pour essayer d'être plus clair, comment puis-je trouver le nom du
contrôle
"fsub01" à partir d'un code VBA placé dans le sous-formulaire?
Merci pour votre aide.
Chris













je propose cette solution qui ne fait pas appel au controle actif mais
qui recherche le controle sous-formulaire qui contient le
sous-formulaire dans lequel le code est appelé

Private Sub Form_Current()

Dim ctrl As Control

For Each ctrl In Me.parent.Controls
If ctrl.ControlType = acSubform Then
If ctrl.SourceObject = Me.Name Then
MsgBox Ctrl.Name
End If
End If
Next
End Sub
Avatar
BCS
Bonjour,

Merci pour la réponse.
J'avais déjà pensé à cette solution qui m'irait super bien à une seule
exception près, c'est que je peux avoir plusieurs sous-formulaires dans mon
formulaire parent avec la même source...

Je suis toujours ouvert à tout type de solution...

Merci d'avance

Chris


"Hugues" wrote:

BCS a écrit :
> Bonjour,
>
> Merci pour cette réponse.
> C'est presque bon mais le soucis de l'activecontrol c'est que cela ne
> fonctionne pas à l'ouverture de mon sous-formulaire. De plus l'activecontrol
> n'est pas toujours celui qu'on croit ;-) si je mets 3 sous-formulaires dans
> mon formulaire parent, à l'ouverture seul le premier sous-formulaire sera
> correct mais pas les autres...
>
> Merci qd mm, je continue à creuser de mon côté aussi.
> Si je ne trouve pas, cela passera par une table temporaire... :s
>
> A+
>
> "Gilles MOUGNOZ" wrote:
>
>
>> Bonjour, BCS
>>
>> Une solution pourrait être de retourner le nom du contrôle actif du
>> formulaire parent :
>> Me.Parent.ActiveControl.Name
>> Ce code étant appelé lors d'un événement du sous-formulaire, le contrôle
>> sous-formulaire devrait donc être le contrôle actif.
>>
>> --
>> Bonne continuation
>> -------------------------------------------------------------------------------------------
>> http://www.mpfa.info : c'est bonheur pour ton ordinateur !
>> -------------------------------------------------------------------------------------------
>> "BCS" a écrit :
>>
>>> Bonjour,
>>> Merci de la réponse mais il ne s'agit pas de ça. Je ne recherche pas à
>>> connaitre le nom du formulaire parent mais le nom du controle, dans le
>>> formulaire parent, qui contient le sous-formulaire. Le tout à partir d'un
>>> code VBA placé dans le sous-formulaire
>>> Merci d'avance,
>>> "Hugues" wrote:
>>>
>>>> Bonjour,
>>>> il suffit d'utiliser la propriété "parent"
>>>> Me.parent.name
>>>> notez que de cette façon on accède aussi aux controles du formulaire
>>>> parent
>>>> me.parent![mon_controle]
>>>> "BCS" a écrit :
>>>>
>>>>> Bonjour,
>>>>> J'ai créé un formulaire dans lequel se trouve un sous-formulaire.
>>>>> Le controle sous-formulaire se nomme "fsub01"
>>>>> Comment puis-je, à partir d'un code VBA placé dans le sous-formulaire,
>>>>> trouver le nom du controle qui le contient dans le formulaire parent?
>>>>> Pour essayer d'être plus clair, comment puis-je trouver le nom du
>>>>> contrôle
>>>>> "fsub01" à partir d'un code VBA placé dans le sous-formulaire?
>>>>> Merci pour votre aide.
>>>>> Chris
>>>>>
>>
>>
je propose cette solution qui ne fait pas appel au controle actif mais
qui recherche le controle sous-formulaire qui contient le
sous-formulaire dans lequel le code est appelé

Private Sub Form_Current()

Dim ctrl As Control

For Each ctrl In Me.parent.Controls
If ctrl.ControlType = acSubform Then
If ctrl.SourceObject = Me.Name Then
MsgBox Ctrl.Name
End If
End If
Next
End Sub