ACCESS: macro transfert formulaire à un autre

Elo97133 -  
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

7 réponses

LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
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
0
Elo97133
 
Merci pour ta réponse

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
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
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.
0
Elo97133
 
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?
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
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.
0
Elo97133
 
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?
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
Je ne comprends pas pourquoi "DoCmd.OpenForm "[Contacts]![Nom]", , , MonContact "

C'est le nom du formulaire à ouvrir, que tu dois mettre là.

0
Elo97133
 
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!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
De rien. Tout le plaisir est pour moi!
0
Chris
 
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.
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
Si le vélo subit plusieurs réparations, ça fait plusieurs lignes dans le sous-formulaire?
0
CHris
 
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).
0
LatelyGeek Messages postés 1774 Date d'inscription   Statut Membre Dernière intervention   550
 
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
0