VBA Access ouvrir 1 form à partir d'1 autre

Fermé
bambi8511 Messages postés 1 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 25 juillet 2007 - 25 juil. 2007 à 14:57
 M.A.X.I.M.E. - 25 févr. 2011 à 13:30
Bonjour,

J'apprends à coder en VBA sous Access, et ne connais presque rien à l'informatique encore moins au code... alors votre aide me serait très précieuse !

En deux mots, ce que je cherche à obtenir :
j'ai un formulaire, qui me permet d'ouvrir d'autres formulaires
j'ai créé une zone de liste déroulante (avec des noms de ville) avec à côté un bouton de commande appelé "Rechercher"
je voudrais que, lorsque je sélectionne une ville dans la zone de liste déroulante, puis que je clique sur le bouton de commande, la macro ouvre le formulaire "ville" au niveau du bon enregistrement (celui que j'ai sélectionné dans la liste déroulante)

Et c'est là que ça bloque !

Voici mes bouts de code :
- celui-là fonctionne, car j'ai marqué directement le nom du fonds :

Private Sub Commande28_Click()
DoCmd.OpenForm "ville", acNormal, , "nomville = 'BLAH'", acReadOnly, acWindowNormal
End Sub

- mais quand je remplace le nom du fonds par un bout de code qui va requêter le texte sélectionné dans la case de la liste déroulante (comme ci-dessous), ça ne marche plus. Le formulaire "ville" s'ouvre sur le premier enregistrement et non pas celui que je veux :

Private Sub Commande28_Click()
DoCmd.OpenForm "ville", acNormal, , , acReadOnly, , "nomville = '" & Modifiable26.Value & "'"
End Sub

- autre tentative, autre résultat : j'ai positionné mon code qui va chercher l'info dans la case de liste déroulante non pas au niveau de l'argument ArgOuverture, mais plutôt au niveau de l'argument ConditionWhere :

Private Sub Commande28_Click()
DoCmd.OpenForm "ville", acNormal, , "nomville = 'Modifiable26.Value'", acReadOnly
End Sub

Dans ce cas-ci, le résultat est encore pire : le formulaire ville semble s'ouvrir, mais en fait, c'est juste une fenêtre complètement vide.

Merci d'avance de votre aide si vous avez une petite idée !
A voir également:

5 réponses

Bonjour,
Je pense que c'est la syntaxe que vous recherchez.
Elle est à créer sur l'évènement sur click (Ce n'est qu'un exemple) derrière un bouton


Dim StDocName As String
Dim StLinkCriteriA As String

StDocName = "Formulaire à ouvrir"
StLinkCriteriA = "[champLié_1]=" & Me![champlié_2]

DoCmd.OpenForm StDocName, , , StLinkCriteriA


Bonne journée

La science ne fait que trouver ce qui existe depuis toujours.
Hubert REEVES.
2
massi57 Messages postés 3 Date d'inscription jeudi 20 mai 2010 Statut Membre Dernière intervention 20 mai 2010 1
20 mai 2010 à 15:47
Dim stDocName As String
Dim StLinkCriteriA As String
stDocName = "nomduformulaire"
StLinkCriteriA = "[clé]=" & [clé].Value
' -------ouverture du formulaire en lecture seule-----------
DoCmd.OpenForm stDocName, , , StLinkCriteriA, acFormReadOnly
ce devrait vous aider
Cordialement
1
Et pour plusieurs conditions (un nom et prenom définit) comme ci-dessous...

Private Sub Commande30_Click()
DoCmd.OpenForm "inserer_contact", acNormal, , "prenom =" & Me!prenom And "nom=" & Me!nom, acReadOnly, acWindowNormal
End Sub


... une erreur est retournée. Alors qu'avec 1 seule condition il n'y a pas de probleme. Qu'en pensez-vous ?
0
J'ai trouvé une solution:

Private Sub Commande30_Click()

Dim id_region As Single
Dim id_eleve As Single

id_region = Forms!form1!id_region
id_eleve = Forms!form1!id_eleve

DoCmd.OpenForm "Eleve", acNormal, , "id_region =" & id_region & " and id_eleve=" & id_eleve, acReadOnly, acWindowNormal

End Sub


Mais je recontre un nouveau probleme c'est que je ne peut pas modifier le formulaire qui s'ouvre, est-ce dû à un des parametres de l'instruction DoCmd.OpenForm ?...
Merci de votre aide...
0

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

Posez votre question
Solution trouvée:

Il faut remplacer acReadOnly par rien

DoCmd.OpenForm "Eleve", acNormal, , "id_region =" & id_region & " and id_eleve=" & id_eleve, , acWindowNormal

M.A.X.I.M.E.
0