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

SOS je capitule

16 réponses
Avatar
valenza
bonjour
apr=E8s quelques recherches infructueuses je me retourne =E0 nouveau vers
vous.

je souhaiterais par un double clic sur un champ (provenant d'un
formulaire d'accueil) faire un double filtre
dans un formulaire qui s'ouvre de la mani=E8re suivante :

Formulaire -> Controle onglets (4 onglets) -> un sous formulaire ds
chaque onglet -> un champ
Le formulaire est bas=E9 sur une table avec une cl=E9 primaire (Num auto)

le sous-formulaire du premier onglet idem sur une table avec une cl=E9
primaire (Num auto)
relation entre les deux par un champ de type Num=E9rique

J'arrive =E0 filtrer sur le formulaire, mais je ne parviens pas =E0
descendre jusqu'=E0 mon sous-formulaire

voici mon code :

Dim stock As Integer
Dim refer As Integer
stock =3D Me.ID_structure
refer =3D Me.ID_Ref

DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure] LIKE '" &
stock & "*'" And
"[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent]
LIKE'" & refer & "*'"
DoCmd.Close acForm, "F_rechercheRef"

le code fonctionne jusqu'avant le AND quand je rajoute la suite .....

pourriez-vous m'aider svp

merci d'avance

BV

6 réponses

1 2
Avatar
valenza
ID_structure = clé primaire de la table structure
Nom-referent = clé primaire de la table referent
(numérique meme si le nom pourrait sous-entendre le contraire)

le but c'est de filtrer le formulaire par structure (marche tres bien)
et par la personne qui aura été sélectionnée ds le form précéde nt
(refer)
afin de filtrer le sous-formulaire et arriver directement sur son
enregistrement

Exemple :

par l'action double clic je récupére les données
stock : 47
refer : 125

et je filtre le formulaire et le sous-formulaire sur les données
récupérées
ID_structure : 47
Nom-referent : 125

désolé si je ne suis pas tres clair

BV



Bonjour,

Pas sur d'avoir tout compris ;-)

Il y a un probleme, à savoir que le champ qui suit le And doit être un
champ de la table/requête sous-jacente au formulaire "F_Structure" et
non une valeur du sous-form du controle onglet. Toutefois, ce champ de
la table/Requête peut lui recevoir une valeur du sous-form du controle
onglet.

Je proposerai:
DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure] LIKE '" &
stock & "*' And [Nom_Referent] like '" &
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] & "*'"

En supposant que Id_Structure est de type Texte.
De plus, je ne suis pas sûr de la syntaxe
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] pour
accéder au contenu du controle Nom_Referent se trouvant dans le
sous-form du controle onglet. (A vérifier)

D'où la question : A quoi sert ?
Dim refer As Integer
refer = Me.ID_Ref

toujours le même message

quand je mets un point d'arret ds le code vba j'ai les bons ID
(struture et référent)

... merci encore pour votre aide car j'essai de progresser en tatonnant
en vba mais
je dois avouer que ce n'est pas aussi limpide pour moi, alors que vous
......on dirait que c'est enfantin (côté frustrant de l'informatiqu e)






Quoi, j'ai pas droit à l'erreur ?

DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure] LIKE '" & st ock & "*' And " &
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] & " L IKE '" & refer & "*'"

J-Pierre





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr




Avatar
Eric
Re,

Je verrai un truc du genre (mais je ne sais pas si je vois clair ;-) )
Sur l'évènement double-click où tu récupères les données de ID_Structure
et Nom_Referent (qui sont des numériques)
un DoCmd.Openform avec clause Where et passage d'arguments (OpenArgs) ainsi:
DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure]=" & stock, , ,
refer

(ps: il est possible de faire la même chose sans passer par tes
variables qui, si elles correspondent à des NumAuto, devraient être
déclarées en Long)

puis sur l'évènement Sur Chargement du sous-formulaire de l'onglet à
filtrer:
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then ' on filtre le jeu
Me.NomSousFormuliare.Form.Filter = "nom_Referent=" &
CLng(Me.OpenArgs)
Me.NomSousFormuliare.Form.FilterOn = True
' en supposant que le Sousformulaire à filtrer est sur la page 2
' se positionner sur la page du controle onglet nommé CtlTab0
Me.CtlTab0.Pages(1).SetFocus
End If
End Sub

( A adapter pour les autres sous-form)

ID_structure = clé primaire de la table structure
Nom-referent = clé primaire de la table referent
(numérique meme si le nom pourrait sous-entendre le contraire)

le but c'est de filtrer le formulaire par structure (marche tres bien)
et par la personne qui aura été sélectionnée ds le form précédent
(refer)
afin de filtrer le sous-formulaire et arriver directement sur son
enregistrement

Exemple :

par l'action double clic je récupére les données
stock : 47
refer : 125

et je filtre le formulaire et le sous-formulaire sur les données
récupérées
ID_structure : 47
Nom-referent : 125

désolé si je ne suis pas tres clair

BV




Bonjour,

Pas sur d'avoir tout compris ;-)

Il y a un probleme, à savoir que le champ qui suit le And doit être un
champ de la table/requête sous-jacente au formulaire "F_Structure" et
non une valeur du sous-form du controle onglet. Toutefois, ce champ de
la table/Requête peut lui recevoir une valeur du sous-form du controle
onglet.

Je proposerai:
DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure] LIKE '" &
stock & "*' And [Nom_Referent] like '" &
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] & "*'"

En supposant que Id_Structure est de type Texte.
De plus, je ne suis pas sûr de la syntaxe
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] pour
accéder au contenu du controle Nom_Referent se trouvant dans le
sous-form du controle onglet. (A vérifier)

D'où la question : A quoi sert ?
Dim refer As Integer
refer = Me.ID_Ref


toujours le même message

quand je mets un point d'arret ds le code vba j'ai les bons ID
(struture et référent)

... merci encore pour votre aide car j'essai de progresser en tatonnant
en vba mais
je dois avouer que ce n'est pas aussi limpide pour moi, alors que vous
......on dirait que c'est enfantin (côté frustrant de l'informatique)







Quoi, j'ai pas droit à l'erreur ?

DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure] LIKE '" & stock & "*' And " &
[FORMS]![F_STRUCTURE]![CtlTab]![monsousformulaire]![Nom_referent] & " LIKE '" & refer & "*'"

J-Pierre



--

A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Erreur !!!

lire :
puis sur l'évènement Sur Chargement du formulaire avec le controle
Onglet contenant le sous-form à filtrer (donc F_structure)

au lieu de :
puis sur l'évènement Sur Chargement du sous-formulaire de l'onglet à filtrer




Re,

Je verrai un truc du genre (mais je ne sais pas si je vois clair ;-) )
Sur l'évènement double-click où tu récupères les données de ID_Structure
et Nom_Referent (qui sont des numériques)
un DoCmd.Openform avec clause Where et passage d'arguments (OpenArgs)
ainsi:
DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure]=" & stock, , ,
refer

(ps: il est possible de faire la même chose sans passer par tes
variables qui, si elles correspondent à des NumAuto, devraient être
déclarées en Long)

puis sur l'évènement Sur Chargement du sous-formulaire de l'onglet à
filtrer:
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then ' on filtre le jeu
Me.NomSousFormuliare.Form.Filter = "nom_Referent=" &
CLng(Me.OpenArgs)
Me.NomSousFormuliare.Form.FilterOn = True
' en supposant que le Sousformulaire à filtrer est sur la page 2
' se positionner sur la page du controle onglet nommé CtlTab0
Me.CtlTab0.Pages(1).SetFocus
End If
End Sub

( A adapter pour les autres sous-form)




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
valenza
Bonjour eric et merci pour votre réponse

j'ai essayé votre solution
je n'ai plus le message d'erreur, la structure est bien filtrée mais
pas le sous-formulaire

j'essaie de faire des tests à partir de votre code

merci

BV






Erreur !!!

lire :
puis sur l'évènement Sur Chargement du formulaire avec le controle
Onglet contenant le sous-form à filtrer (donc F_structure)

au lieu de :
puis sur l'évènement Sur Chargement du sous-formulaire de l'onglet à filtrer




Re,

Je verrai un truc du genre (mais je ne sais pas si je vois clair ;-) )
Sur l'évènement double-click où tu récupères les données de ID_Structure
et Nom_Referent (qui sont des numériques)
un DoCmd.Openform avec clause Where et passage d'arguments (OpenArgs)
ainsi:
DoCmd.OpenForm "F_structure", acNormal, , "[ID_Structure]=" & stock, , ,
refer

(ps: il est possible de faire la même chose sans passer par tes
variables qui, si elles correspondent à des NumAuto, devraient être
déclarées en Long)

puis sur l'évènement Sur Chargement du sous-formulaire de l'onglet à
filtrer:
Private Sub Form_Load()
If Not IsNull(Me.OpenArgs) Then ' on filtre le jeu
Me.NomSousFormuliare.Form.Filter = "nom_Referent=" &
CLng(Me.OpenArgs)
Me.NomSousFormuliare.Form.FilterOn = True
' en supposant que le Sousformulaire à filtrer est sur la pag e 2
' se positionner sur la page du controle onglet nommé CtlTab0
Me.CtlTab0.Pages(1).SetFocus
End If
End Sub

( A adapter pour les autres sous-form)




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr



Avatar
Eric
Bonjour,

Ca ne marche que si le formulaire à ouvrir et donc à filtrer est fermé.
Un exemple très simplifié ici : http://cjoint.com/?lirGynznI3 (qui ne
tient pas compte de vos formulaires et noms des champs) mais qui
respecte le principe, je pense. Le code se trouve dans les modules
asociés aux formulaires.

Bonjour eric et merci pour votre réponse

j'ai essayé votre solution
je n'ai plus le message d'erreur, la structure est bien filtrée mais
pas le sous-formulaire

j'essaie de faire des tests à partir de votre code

merci

BV







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
valenza
bonjour

merci beaucoup pour votre réponse
je vais faire en quelque sorte un mix des deux
sur le double clic je vais demander à fermer le formulaire avant de
lancer la procédure
et on verra bien, sinon si ca me bloque encore, je ferai apparaitre le
sous-formulaire
en popup

merci encore pour votre aide

Bonne journée

BV
1 2