ACCESS - Parcours de formulaire - Syntaxe

Bonjour,

Je cherche à faire des parcours de formulaire et des ses sous formulaires mon problème c que je n'arrive pas à appeller mon sous-formulaire cf le designer
J ai un variable de type form qui designe mon formulaire courant quelle est la syntaxe pour designer le sous formulaire ?
Merci d avance

Julie.

23 réponses

Résumé de la discussion

Problème central : appeler un sous-formulaire à partir du formulaire dans Access pose des difficultés lorsque noms contiennent caractères spéciaux ou lorsque la casse et la syntaxe de référence ne sont pas respectées. Des solutions essentielles incluent l'encadrement des noms d'objets avec des crochets pour les espaces ou les tirets, l'utilisation de la référence Forms!NomFormulaire!NomSousFormulaire ou Form!NomSousFormulaire et le respect de la casse. En pratique, les échanges suggèrent aussi de vérifier les requêtes et le contexte du formulaire afin d'éviter les erreurs liées à la casse, aux guillemets, ou à l'utilisation d'un nom qui change lors de modifications.

Bobot (l’IA à votre service)
  1. Modérateur
    Salut,

    sans explication, pas moyen de trouver :-)))
    Forms![principal].Form![SF_Start_Group-G].Visible = True
    Cette ligne rend visible le sous-formulaire nommé "SF_Start_Group-G" situé dans le formulaire "principal"...

    A+ Blux
     "Les cons, ça ose tout.
    C'est même à ça qu'on les reconnait"
    0
    1. Bonjour Julie,

      Je n'arrive pas bien à saisir ta question ; est-ce que tu veux lier ton sous-formulaire à ton formulaire principal ?
      0
      1. Re :) Merci pour les reponses déjà je vais réexpliquer
        Mon formulaire est déjà fait mais lorsque la saisie est fini je veux pouvoir faire un controle sur ce qui a été saisie.
        Je souhaite verifié la valeur d'un champ de mon formulaire principal et si elle me convient allez voir dans le sous formulaire si les valeurs me conviennent aussi. Pour cela je fais du recursif je verifie mes valeurs dans le formulaire courant puis je rapl ma fonction sur le sous formulaire et ainsi de suite mon problème c'est lorsque je veux rapl ma fonction sur le sous formulaire je n'arrive pas à trouver la bonne syntaxe pour désigner ce sous formulaire

        ublic Function testFormulaire(mon_form As Form) As Boolean
            Dim ctl As Control
            MsgBox ("Entree dans " & mon_form.Name)
            
            If mon_form![Somme_fin] <> 1 Then
                MsgBox ("Somme_fin différent de 100% ! Veuillez modifier vos valeurs")
                testFormulaire = False
            Else
                MsgBox ("Entree else")
                For Each ctl In mon_form.Controls
                If ctl.Name = "Pourcentage" Then
                MsgBox ("Valeur " & ctl.Name & ":" & ctl.Value)
                    If ctl.Value <> 0 Then
                        Select Case mon_form.Name
                            Case "Silhouette_ss-form"
                            MsgBox ("Cas 1")
                                testFormulaire = testFormulaire(Forms!Ligne_Contrat!Silhouette_ss - Form!Finitions_ss - Form)
                            Case "Finitions_ss-form"
                            MsgBox ("Cas 2")
                                testFormulaire = testFormulaire(mon_form.Motor_sous_formulaire)
                            Case "Motor_form"
                            MsgBox ("Cas 3")
                                testFormulaire = testFormulaire(mon_form.Couleur_ext_form)
                            Case "Couleur_ext_form"
                            MsgBox ("Cas 4")
                                testFormulaire = testFormulaire(mon_form.Couleur_int_form)
                            Case "Couleur_int_form"
                            MsgBox ("Cas 5")
                                testFormulaire = True
                        End Select
                    End If
                End If
                Next ctl
            End If
        End Function
        


        Voila le code c en mode debugage pour l instant donc je sais pas si ca va etre clair j espere en tout cas que mes explications etaient plus clair :)
        G mis en gras ou mon probleme se pose

        Julie.
        0
        1. Modérateur
          Pour moi, le problème est qu'un formulaire ne s'appelle pas avec la même syntaxe qu'un sous-formulaire, donc en récursif, il faudrait rajouter le début du nom (ou le concaténer avant l'appel)...

          A+ Blux
           "Les cons, ça ose tout.
          C'est même à ça qu'on les reconnait"
          0
          1. Je n ai pas compris ce que tu dis qu il faut concaténer
            Merci,

            Julie.
            0
            1. Modérateur
              En clair, ta ligne "cas1", n'a pas la syntaxe correcte pour référencer un sous-formulaire.

              pour un sous-formulaire : forms!nom_form.form!nom_de_sous_form
              pour un formulaire : forms!nom_form

              Il faut donc appeler différemment un sous-formulaire, i.e rajouter .form!.... si tu veux faire passer le nom dans une fonction récursive.

              A+ Blux
               "Les cons, ça ose tout.
              C'est même à ça qu'on les reconnait"
              0
              1. OK mais j ai essayé de mette le nom complet :
                testFormulaire = testFormulaire(Forms!Silhouette_ss - Form.Form!Finitions_ss - Form)

                Le prob c que mon formulaire s'apl Silhouette_ss-form avec un petit "f" et Access me mets un grand F d'où le problème et si je change le nom de mon formulaire ca me boussille mon formulaire au nivo des requetes donc mission impossible ...
                :(

                Julaie.
                0
                1. Modérateur
                  Quand un obJet ACCESS contient des caractères spéciaux (espace...), on le met généralement entre crochets : [mon form]...

                  Il doit reconnaitre le '-' comme caractère spécial (c'est le signe de la soustraction en VBA, et il n'aime pas qu'on le mette dans les noms d'objets, son analyseur de syntaxe se perd un peu les pédales...)

                  Ca t'aiderait ?

                  A+ Blux
                   "Les cons, ça ose tout.
                  C'est même à ça qu'on les reconnait"
                  0
                  1. Bon au moins il execute avec ca :) merci bien
                    mais ca fait pas encore ce que je veux mais ca doit etre mon prog qui est foireux ;) faut que je debug merci bien :)

                    Julie.
                    0
                    1. Modérateur
                      Ah ben voui !
                      Je debuggue pas l'algorithmique dans les pensées... ;-)

                      A+ Blux
                       "Les cons, ça ose tout.
                      C'est même à ça qu'on les reconnait"
                      0
                      1. Bonjour,

                        Bon g ce problème de caractères spécials et si je modifie le nom de mes formulaires g des requetes qui foire (meme en changeant les noms dedans ! je vois pas pkoi) ke faire ? HELP

                        Julie.
                        0
                        1. Modérateur
                          Elles foirent ?
                          C'est quoi le message d'erreur ?
                          Tu as mis des [] pour les noms de champ avec des caractères "spécials" ?

                          A+ Blux
                           "Les cons, ça ose tout.
                          C'est même à ça qu'on les reconnait"
                          0
                          1. lol caractères spéciaux pardon oué g mis les [] mais il es pas content du coup je change le nom de mes formulaires en les simplifiant mais maintenant mon formulaire foire sur une liste déroulante : dans mon dernier sous formulaire j ai une liste déroulante qui trouve ses valeurs grace à une requete SQL mais cette requete utilise la clé qui est dans ce formulaire sur la meme ligne la requete en elle meme marche bien mais quand j execute le formulaire il me trouve pas cette clé qui est pourtant dans le formulaire il m ouvre alors une boite de dialogue pour me la demander ... Galère :(

                            Julie.
                            0
                            1. Modérateur
                              Il se peut qu'ACCESS n'ait pas véritablement changé le nom du sous-formulaire, cela arrive lorsqu'on le renomme. Vérifie que le nom est correct partout (cliquer une fois sur le sous-form et vérifier ses propriétés...)

                              A+ Blux
                               "Les cons, ça ose tout.
                              C'est même à ça qu'on les reconnait"
                              0
                              1. Mais c de la folie c pas sorcier ce que je veux faire et j y arrive pas ! J hallucine :(
                                Maintenant que j ai mon problème précédent, j ai changé mes noms de formulaires il reconnait jamais le formulaire l'erreur c
                                "impossible de trouver le formulaire ..."
                                0
                                1. Modérateur
                                  C'est ce que je dis, il a gardé quelque part l'ancien nom, cela arrive avec les sous-formulaires, vois mon message 14...

                                  A+ Blux
                                   "Les cons, ça ose tout.
                                  C'est même à ça qu'on les reconnait"
                                  0
                                  1. Oué j ai refait le tour et tout remis correctement effectivement ca avait pas tout modifié et ma requete marche com ca mais mon prob de formulaire est tjs le meme :(

                                    Julie.
                                    0
                                2. Bon je vais donner toutes les infos peut etre quelqu un pourra me donner la reponse :
                                  Voici la hierarchie de mes formulaires
                                  Ligne_Contrat>silhouette>Finitions>Motorisation>Couleur_ext>Couleur_int

                                  J ai la variable mon_form = silhouette
                                  Je veux apl ma fonction sur le sous formulaire Finitions
                                  testFormulaire = testFormulaire(????)
                                  Que dois je mettre dans ????
                                  J ai test Forms!silhouette.Form!Finitions
                                  et d autre à chaque fois il me repond impossible de trouver le formulaire 'silhouette'

                                  Merci (notamment à Blux pour sa patience ;) )

                                  Julie.
                                  0
                                  1. Modérateur
                                    J'ai jamais mis plus de 2 forms en sous-forms, amis je verrais plutôt cela comme syntaxe :

                                    forms![ligne_contrat].form![silhouette].form![finitions]
                                    ou
                                    forms![ligne_contrat].forms![silhouette].form![finitions]

                                    A+ Blux
                                     "Les cons, ça ose tout.
                                    C'est même à ça qu'on les reconnait"
                                    0
                                    1. Ca compte les majuscule minuscule non ?

                                      Julie.
                                      0
                                    2. Modérateur
                                      Non.

                                      A+ Blux
                                       "Les cons, ça ose tout.
                                      C'est même à ça qu'on les reconnait"
                                      0
                                  2. "Impossible de trouver le formulaire 'Ligne_Contrat' ..."
                                    :(
                                    Merci tout de même peut etre que le contexte ne lui permet pas de situer le formulaire

                                    Julie.
                                    0
                                    • 1
                                    • 2