{Access} Sous formulaire
damien_phenix
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
zenon Messages postés 726 Date d'inscription Statut Membre Dernière intervention -
zenon Messages postés 726 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je suis novice en access et j'ai besoin d'aide.
Dans le cadre de mon travail j'ai réussi gràce à un tuto à créer deux listes déroulantes (la deuxième dépend de la première) dans un formulaire 1.
J'ai créer un sous-formulaire qui est visible dans mon formulaire 1.
Ce que je souhaite maintenant c'est que l'affichage des données de mon sous-formulaire dépend de la valeur de mes 2 liste déroulantes.
De plus je souhaiterais également que ce sous-formulaire s'ouvre unique lorsque l'utilisateur choisi la valeur de ma deuxième liste déroulante.
Par ailleurs j'aimerais aussi que l'utilisateur puisse modifier les champs présents dans le sous-formulaire.
Merci d'avance de m'aider.
Damien
je suis novice en access et j'ai besoin d'aide.
Dans le cadre de mon travail j'ai réussi gràce à un tuto à créer deux listes déroulantes (la deuxième dépend de la première) dans un formulaire 1.
J'ai créer un sous-formulaire qui est visible dans mon formulaire 1.
Ce que je souhaite maintenant c'est que l'affichage des données de mon sous-formulaire dépend de la valeur de mes 2 liste déroulantes.
De plus je souhaiterais également que ce sous-formulaire s'ouvre unique lorsque l'utilisateur choisi la valeur de ma deuxième liste déroulante.
Par ailleurs j'aimerais aussi que l'utilisateur puisse modifier les champs présents dans le sous-formulaire.
Merci d'avance de m'aider.
Damien
A voir également:
- {Access} Sous formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
- Probleme avec formulaire et sous formulaire independant. ✓ - Forum Access
7 réponses
Bonsoir,
J'imagine que tes listes déroulantes te permettent de filtrer les enregistrements de ton formulaire principal.
Il faut que ton sous-formulaire et ton formulaire principal soient liés par une relation et tu dois simplement remplir les champs "père" et "fils" dans les propriétés du sous-formulaire pour que son contenu soit mis à jour.
J'imagine que tes listes déroulantes te permettent de filtrer les enregistrements de ton formulaire principal.
Il faut que ton sous-formulaire et ton formulaire principal soient liés par une relation et tu dois simplement remplir les champs "père" et "fils" dans les propriétés du sous-formulaire pour que son contenu soit mis à jour.
Bonjour et merci,
J'ai mis en place la relation champ père / champs fils. Maintenant lorsque mon formulaire s'ouvre mon sous-formulaire est vide (ce qui est plutôt bien).
Par contre lorsque je choisi deux valeurs pour mes listes déroulantes aucun tri n'est éffectué, tous les champs de ma requête apparaissent.
Vu que je suis en phase de test j'ai créé 2 sous formulaires, un basé sur une table et l'autre sur une requête. Le résultat est le même sur les deux sous formulaires.
Comment puis je faire pour que les données qui s'affichent dans mon sous formulaire soient triées en fonction de mes listes déroulantes?
Merci d'avance.
Damien
J'ai mis en place la relation champ père / champs fils. Maintenant lorsque mon formulaire s'ouvre mon sous-formulaire est vide (ce qui est plutôt bien).
Par contre lorsque je choisi deux valeurs pour mes listes déroulantes aucun tri n'est éffectué, tous les champs de ma requête apparaissent.
Vu que je suis en phase de test j'ai créé 2 sous formulaires, un basé sur une table et l'autre sur une requête. Le résultat est le même sur les deux sous formulaires.
Comment puis je faire pour que les données qui s'affichent dans mon sous formulaire soient triées en fonction de mes listes déroulantes?
Merci d'avance.
Damien
Bon, on postule que tu utilises l'assistant liste de choix.
Dans la première boite de dialogue, il te demande ce que tu veux faire; choisis la troisième option: qqch comme "rechercher un enregistrement".
en principe, le reste est automatique. Si tu vas dans les propriétés de la liste, sous l'onglet événement, sur clic et que tu cliques sur les trois points à droite, tu ouvres VisualBasic et tu vois le code qui permet le tri.
Je ne comprends pas bien pourquoi tu as deux listes déroulantes. Probablement le contenu de la seconde dépend-il de la première. pourrais-tu nous en dire plus?
Dans la première boite de dialogue, il te demande ce que tu veux faire; choisis la troisième option: qqch comme "rechercher un enregistrement".
en principe, le reste est automatique. Si tu vas dans les propriétés de la liste, sous l'onglet événement, sur clic et que tu cliques sur les trois points à droite, tu ouvres VisualBasic et tu vois le code qui permet le tri.
Je ne comprends pas bien pourquoi tu as deux listes déroulantes. Probablement le contenu de la seconde dépend-il de la première. pourrais-tu nous en dire plus?
Bonsoir,
Désolé si je n'ai pas été assez explicite sur mon projet.
Dans un formulaire se trouve deux listes modifiables.
Effectivement le contenu de la seconde liste dépend de la première.
Ma première liste est basée sur une table alors que ma seconde est basée sur requête.
(Je les ai réalisé gràce à un tutoriel :
-création de la première liste
-création de la requête de liaison entre les deux listes
-création de la deuxième liste
-mise en place du critère de ma requête
-écriture du code sur l'événement après mise à jour de ma première liste.)
(Les valeurs visibles dans la deuxième liste respectent bien les conditions de la première.)
Lorsqu'un choix sur la deuxième liste a été réalisé un sous-formulaire doit s'ouvrir.
Deux champs de mon sous-formulaire doivent reprendre les deux valeurs de choix de mes listes déroulantes. Les autres champs doivent être vide et libre en écriture car l'utilisateur viendra les compléter. Mon sous-formulaire quand à lui est basée sur une autre table.
J'ai essayer de recommencer mes listes modifiable et au début l'assistant me demande simplement si je souhaite utiliser une table/requête déjà créer ou saisir les valeurs manuellement. Dans mon cas j'ai choisi à partir d'une requête/table déjà créer.
Si il faut d'autres informations que pour vous puissiez m'aider n'hésitez pas à me demander.
Merci d'avance.
Damien.
Désolé si je n'ai pas été assez explicite sur mon projet.
Dans un formulaire se trouve deux listes modifiables.
Effectivement le contenu de la seconde liste dépend de la première.
Ma première liste est basée sur une table alors que ma seconde est basée sur requête.
(Je les ai réalisé gràce à un tutoriel :
-création de la première liste
-création de la requête de liaison entre les deux listes
-création de la deuxième liste
-mise en place du critère de ma requête
-écriture du code sur l'événement après mise à jour de ma première liste.)
(Les valeurs visibles dans la deuxième liste respectent bien les conditions de la première.)
Lorsqu'un choix sur la deuxième liste a été réalisé un sous-formulaire doit s'ouvrir.
Deux champs de mon sous-formulaire doivent reprendre les deux valeurs de choix de mes listes déroulantes. Les autres champs doivent être vide et libre en écriture car l'utilisateur viendra les compléter. Mon sous-formulaire quand à lui est basée sur une autre table.
J'ai essayer de recommencer mes listes modifiable et au début l'assistant me demande simplement si je souhaite utiliser une table/requête déjà créer ou saisir les valeurs manuellement. Dans mon cas j'ai choisi à partir d'une requête/table déjà créer.
Si il faut d'autres informations que pour vous puissiez m'aider n'hésitez pas à me demander.
Merci d'avance.
Damien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si ton sous formulaire est lié, il faut que ta seconde liste pointe sur un et un seul enregistrement de ton formulaire principal. Alors ton sous formulaire affichera automatiquement les enregistrements liés.
Si tu veux créer un nouvel enregistrement, il faut faire attention à la manière dont tu construis la requête du sous formulaire: tu ne peux pas ajouter un enregistrement du côté "plusieurs de la relation" si l'enregistrement n'existe pas dans le formulaire principal.
Sinon, tu peux écrire du code VB pour définir la valeur des contrôles dans un nouvel enregistrement.
Je pense que le mieux et de le faire au départ d'un bouton de commande dans l'en-tête du sous formulaire:
DoCmd.GoToRecord,,acNewRec
NomDuContrôle = Forms!NomFormPrincipal!NomDeLaListe
Si tu veux créer un nouvel enregistrement, il faut faire attention à la manière dont tu construis la requête du sous formulaire: tu ne peux pas ajouter un enregistrement du côté "plusieurs de la relation" si l'enregistrement n'existe pas dans le formulaire principal.
Sinon, tu peux écrire du code VB pour définir la valeur des contrôles dans un nouvel enregistrement.
Je pense que le mieux et de le faire au départ d'un bouton de commande dans l'en-tête du sous formulaire:
DoCmd.GoToRecord,,acNewRec
NomDuContrôle = Forms!NomFormPrincipal!NomDeLaListe
Bonjour,
J'ai sais le code (en l'adaptant directement dans mon formulaire) :
DoCmd.GoToRecord,,acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
J'ai juste modifié les noms.
Je l'ai saisi tel quel à la fin de mon code exsitant :
Option Compare Database
Private Sub cmb_Societe_AfterUpdate()
Me![cmb_Societe].Requery
End Sub
Private Sub Commande4_Click()
On Error GoTo Err_Commande4_Click
Dim stDocName As String
stDocName = "Actualisation_Depa_1"
DoCmd.RunMacro stDocName
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
End Sub
DoCmd.GoToRecord , , acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
Par contre maintenant dès j'ai une boite de dialogue qui me demande de saisir une valeur pour cmb_Machine.
Pour poursuivre il me suffit de cliquer sur ok sans saisir de valeur. Cette boite de dialogue revient après effectuer un choix dans la première liste et après le choix de la seconde liste.
Merci.
J'ai sais le code (en l'adaptant directement dans mon formulaire) :
DoCmd.GoToRecord,,acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
J'ai juste modifié les noms.
Je l'ai saisi tel quel à la fin de mon code exsitant :
Option Compare Database
Private Sub cmb_Societe_AfterUpdate()
Me![cmb_Societe].Requery
End Sub
Private Sub Commande4_Click()
On Error GoTo Err_Commande4_Click
Dim stDocName As String
stDocName = "Actualisation_Depa_1"
DoCmd.RunMacro stDocName
Exit_Commande4_Click:
Exit Sub
Err_Commande4_Click:
MsgBox Err.Description
Resume Exit_Commande4_Click
End Sub
DoCmd.GoToRecord , , acNewRec
cmb_Machine = Forms!F_Depa_1!cmbMachine
Par contre maintenant dès j'ai une boite de dialogue qui me demande de saisir une valeur pour cmb_Machine.
Pour poursuivre il me suffit de cliquer sur ok sans saisir de valeur. Cette boite de dialogue revient après effectuer un choix dans la première liste et après le choix de la seconde liste.
Merci.
Attends, je ne comprends pas:
Tu as 2 procédures Sub/End Sub
La première met à jour ta seconde liste (cmb_Societe_AfterUpdate() )
La deuxième exécute une macro (je ne sais pas à quoi elle sert)
Mais le bout de code que tu as ajouté, à quoi est-il attaché?
Il faut qu'il soit exécuté par la commande que tu souhaites voir filtrer le sous-formulaire p.ex après mise à jour de la seconde liste ou par un bouton de commande.
Tu as 2 procédures Sub/End Sub
La première met à jour ta seconde liste (cmb_Societe_AfterUpdate() )
La deuxième exécute une macro (je ne sais pas à quoi elle sert)
Mais le bout de code que tu as ajouté, à quoi est-il attaché?
Il faut qu'il soit exécuté par la commande que tu souhaites voir filtrer le sous-formulaire p.ex après mise à jour de la seconde liste ou par un bouton de commande.