ACCESS: macro transfert formulaire à un autre
Elo97133
-
LatelyGeek Messages postés 1774 Date d'inscription Statut Membre Dernière intervention -
LatelyGeek Messages postés 1774 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Novice qui a besoin d'aide!
J'ai crée un sous-formulaire (Contacts sous-formulaire) dans un formulaire (Tri par compétences).
Je voudrais qu'en cliquant sur le nom d'un personne dans le sous formulaire cela me renvoie dans le formulaire contact où toutes les informations sur cette personne s'affiche.
Je n'y arrive pas j'ai crée une macro (que j'ai inséré dans la propriété sur clic du Nom du sous-formulaire):
ouvrir formulaire
agrandir
et dans l'affichage de "ouvrir formulaire"
j'ai écrit: [Formulaires]![Contacts]![Nom]=[Formulaires]![Contacts Sous-formulaire]![Nom]
Rien à faire!!
Le formulaire Contacts s'affichent sans me donner ausune info!
J'attends vos suggestions!
Merci d'avance
Elo
Novice qui a besoin d'aide!
J'ai crée un sous-formulaire (Contacts sous-formulaire) dans un formulaire (Tri par compétences).
Je voudrais qu'en cliquant sur le nom d'un personne dans le sous formulaire cela me renvoie dans le formulaire contact où toutes les informations sur cette personne s'affiche.
Je n'y arrive pas j'ai crée une macro (que j'ai inséré dans la propriété sur clic du Nom du sous-formulaire):
ouvrir formulaire
agrandir
et dans l'affichage de "ouvrir formulaire"
j'ai écrit: [Formulaires]![Contacts]![Nom]=[Formulaires]![Contacts Sous-formulaire]![Nom]
Rien à faire!!
Le formulaire Contacts s'affichent sans me donner ausune info!
J'attends vos suggestions!
Merci d'avance
Elo
A voir également:
- ACCESS: macro transfert formulaire à un autre
- Access appdata - Guide
- Acer quick access - Forum logiciel systeme
- Désinstaller ACER QUICK ACCESS - Forum Logiciels
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- [Access] creer base données client-produits - Forum Programmation
7 réponses
Le problème, c'est que si tu procèdes comme ça, une fois que le deuxième formulaire est ouvert, le premier n'est plus actif donc ton champ ne contient aucune valeur puisque le sous-formulaire en contient plusieurs.
Il faut le faire en VB, comme ça tu pourras dire à Access de mémoriser les infos AVANT d'ouvrir l'autre formulaire.
Ca donne à peu près:
Private Sub Contact_Click()
MonContact = "[Contact]=" & "'" & Me![Contact] & "'"
DoCmd.OpenForm "TriParCompétences", , , MonContact
End Sub
Il faut le faire en VB, comme ça tu pourras dire à Access de mémoriser les infos AVANT d'ouvrir l'autre formulaire.
Ca donne à peu près:
Private Sub Contact_Click()
MonContact = "[Contact]=" & "'" & Me![Contact] & "'"
DoCmd.OpenForm "TriParCompétences", , , MonContact
End Sub
Mais non, bien sûr que ça ne fonctionne pas!!!
D'abord, parce que j'ai nommé les champs au pif vu que tu ne m'avais pas donné tes noms.
Et puis si tu mets ça dans le formulaire principal ça ne peut pas fonctionner!!!
C'est toi qui as dit "Je voudrais qu'en cliquant sur le nom d'un personne dans le sous formulaire"
J'ai imaginé que le champ du sous formulaire qui contient le nom de la personne s'appelait Contact.
Non, ça n'est pas la peine de m'envoyer le fichier, je n'aurai pas le temps de le bidouiller.
D'abord, parce que j'ai nommé les champs au pif vu que tu ne m'avais pas donné tes noms.
Et puis si tu mets ça dans le formulaire principal ça ne peut pas fonctionner!!!
C'est toi qui as dit "Je voudrais qu'en cliquant sur le nom d'un personne dans le sous formulaire"
J'ai imaginé que le champ du sous formulaire qui contient le nom de la personne s'appelait Contact.
Non, ça n'est pas la peine de m'envoyer le fichier, je n'aurai pas le temps de le bidouiller.
Lool désolée pour ma question débile lool!
Je te montre ce que j'ai écrit dans un module quelconque....
Private Sub Nom_Click()
MonContact = "[Nom]=" & "'" & [Contacts Sous-formulaire]![Nom] & "'"
DoCmd.OpenForm "Contacts", , , MonContact
End Sub
Afin que tu comprennes mieux je te donne les noms exacts:
- en cliquant sur le champ "Nom" du sous-formulaire "Contacts Sous-formulaire"
je veux que ça m'envoie dans
-le formulaire Contacts
et que cela m'affiche
-le "Nom" issu du sous-formulaire (ainsi que d'autres infos de la table Contacts)
Là ça m'ouvre le formulaire Contact grâce à la macro Ouvrir formulaire (dans laquelle j'ai supprimé la commande condition where)
Qu'en penses-tu?
Je te montre ce que j'ai écrit dans un module quelconque....
Private Sub Nom_Click()
MonContact = "[Nom]=" & "'" & [Contacts Sous-formulaire]![Nom] & "'"
DoCmd.OpenForm "Contacts", , , MonContact
End Sub
Afin que tu comprennes mieux je te donne les noms exacts:
- en cliquant sur le champ "Nom" du sous-formulaire "Contacts Sous-formulaire"
je veux que ça m'envoie dans
-le formulaire Contacts
et que cela m'affiche
-le "Nom" issu du sous-formulaire (ainsi que d'autres infos de la table Contacts)
Là ça m'ouvre le formulaire Contact grâce à la macro Ouvrir formulaire (dans laquelle j'ai supprimé la commande condition where)
Qu'en penses-tu?
Ce code ne dervrait pas être écrit dans "un module quelconque", mais dans la propriété évenementielle Sur clic du champ Nom de ton sous-formulaire.
Désolée je t'embête mais cela ne fonctionne toujours pas...
J'ai essayé de le modifier légrèrement mais en vain... j'ai rajouté également le dimensionnement de la variable MonContact..
Private Sub Nom_Click()
Dim MonContact As String
MonContact = [Formulaires]![Contacts Sous-formulaire]![Nom] & "'"
DoCmd.OpenForm "[Contacts]![Nom]", , , MonContact
End Sub
Qu'en penses-tu?
J'ai essayé de le modifier légrèrement mais en vain... j'ai rajouté également le dimensionnement de la variable MonContact..
Private Sub Nom_Click()
Dim MonContact As String
MonContact = [Formulaires]![Contacts Sous-formulaire]![Nom] & "'"
DoCmd.OpenForm "[Contacts]![Nom]", , , MonContact
End Sub
Qu'en penses-tu?
Je ne comprends pas pourquoi "DoCmd.OpenForm "[Contacts]![Nom]", , , MonContact "
C'est le nom du formulaire à ouvrir, que tu dois mettre là.
C'est le nom du formulaire à ouvrir, que tu dois mettre là.
Merrrrrrrcccciii!
J'ai réussi grâce à ta manip!
Cela marche très bien!
J'ai inscrit:
Private Sub Nom_Click()
'Permet de cliquer sur le nom du contact dans le sous formulaire pour ouvrir sa fiche
'Contacts
Dim MonContact As String
MonContact = [Form_Tri par Compétences]![Contacts Sous-formulaire]![Num Contact]
DoCmd.OpenForm "Contacts", , , "[Num Contact]=" & MonContact
End Sub
Perfecto!
Merci encore et bonne journée!
J'ai réussi grâce à ta manip!
Cela marche très bien!
J'ai inscrit:
Private Sub Nom_Click()
'Permet de cliquer sur le nom du contact dans le sous formulaire pour ouvrir sa fiche
'Contacts
Dim MonContact As String
MonContact = [Form_Tri par Compétences]![Contacts Sous-formulaire]![Num Contact]
DoCmd.OpenForm "Contacts", , , "[Num Contact]=" & MonContact
End Sub
Perfecto!
Merci encore et bonne journée!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
De rien. Tout le plaisir est pour moi!
Bonjour,
J'ai un problème semblable avec ma BD Access.
Il y a un formulaire VELO avec un champs nommé VELO_REPARATION qui est un champs oui/non.
Il y a également un sous-formulaire LISTE REPARATIONS avec comme champs Date début, date fin, détails, etc
Ce que je dois faire, c'est lorsqu'il y a une réparation encours, c'est à dire que le champ date début réparation est rempli et le champ date fin réparation ne l'est pas, ACCESS doit cocher(indiquer oui) le champs VELO_REPARATION du formulaire VELO.
C'est donc dire qu'il y a un transfert de donné d'un formulaire à un sous-formulaire.
Merci pour vos réponses.
J'ai un problème semblable avec ma BD Access.
Il y a un formulaire VELO avec un champs nommé VELO_REPARATION qui est un champs oui/non.
Il y a également un sous-formulaire LISTE REPARATIONS avec comme champs Date début, date fin, détails, etc
Ce que je dois faire, c'est lorsqu'il y a une réparation encours, c'est à dire que le champ date début réparation est rempli et le champ date fin réparation ne l'est pas, ACCESS doit cocher(indiquer oui) le champs VELO_REPARATION du formulaire VELO.
C'est donc dire qu'il y a un transfert de donné d'un formulaire à un sous-formulaire.
Merci pour vos réponses.
Si le vélo subit plusieurs réparations, ça fait plusieurs lignes dans le sous-formulaire?
Bonjour,
C'est exact, un vélo peut subir plusieurs réparations, donc dans mon formulaire vélo, on peut voir la description du vélo et en dessous, dans le sous-formulaire réparations, il y a la liste de toutes les réparations effectuées pour ce vélo sous forme tabulaire.
Par contre, même s'il y a plusieurs réparations, cela ne veut pas dire que le vélo est en réparation, car dès qu'une des lignes du sous-formulaire réparation n'a pas de date de fin de réparation, ACCESS doit comprendre que le vélo est en réparation. À ce moment, ACCES doit transférer la valeur -1(oui) dans le champ VELO_A_REPARER de la table vélo.
Bref, si une réparation est entrée(ajout date début réparation seulement) dans le sous-formulaire réparation, le champ VELO_A_REPARER doit être -1(oui).
C'est exact, un vélo peut subir plusieurs réparations, donc dans mon formulaire vélo, on peut voir la description du vélo et en dessous, dans le sous-formulaire réparations, il y a la liste de toutes les réparations effectuées pour ce vélo sous forme tabulaire.
Par contre, même s'il y a plusieurs réparations, cela ne veut pas dire que le vélo est en réparation, car dès qu'une des lignes du sous-formulaire réparation n'a pas de date de fin de réparation, ACCESS doit comprendre que le vélo est en réparation. À ce moment, ACCES doit transférer la valeur -1(oui) dans le champ VELO_A_REPARER de la table vélo.
Bref, si une réparation est entrée(ajout date début réparation seulement) dans le sous-formulaire réparation, le champ VELO_A_REPARER doit être -1(oui).
Tu mets ça sur la propriété Après insertion du sous-formulaire:
Private Sub Form_AfterInsert()
If IsNull(Me!DateFin) Then Parent!VELO_REPARATION.Value = -1
End Sub
Et ça sur la propriété Après MAJ du contrôle DateFin:
Private Sub DateFin_AfterUpdate()
If IsNull(Me!DateFin) Then
Parent!VELO_REPARATION.Value = -1
Else
Parent!VELO_REPARATION.Value = 0
End If
End Sub
Pour décocher la case
Private Sub Form_AfterInsert()
If IsNull(Me!DateFin) Then Parent!VELO_REPARATION.Value = -1
End Sub
Et ça sur la propriété Après MAJ du contrôle DateFin:
Private Sub DateFin_AfterUpdate()
If IsNull(Me!DateFin) Then
Parent!VELO_REPARATION.Value = -1
Else
Parent!VELO_REPARATION.Value = 0
End If
End Sub
Pour décocher la case
J'ai copié ta formule telle quelle dans la partie vb du formulaire "Tri par compétences" qui est le point de départ mais cela ne fonctionne pas.
Par contre tu nomme le sub "contacts_click".... or je dois récupérer la valeur lorsque je clique sur "Contacts Sous-formulaire" (sous-formulaire présent dans le formulaire "Tri par compétence") et après ça je veux que ça me redirige vers le formulaire Contacts.
Préfères-tu que je t'envoie le fichier access?
Merci pour ton aide!
ELo