IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Problème de sub avec un sous formulaire


Sujet :

Access

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut Problème de sub avec un sous formulaire
    Bonjour à tous

    Je bosse sur un formulaire en mode continue (VoyageProduitClient) qui lorsque je double click sur un champ date, il ouvre un autre formulaire (CalendrierVoyageProduits) avec un calendrier, histoire de remplir plus facilement les dates.

    Mon problème, c'est que lorsque je fais ça dans le formulaireVoyageProduitClient en lui même tout va bien. MAIS lorsque qu'il est ouvert en tant que sous formulaire dans le form principal (ProduitsClient), ça marche plus...

    j'ai vu quelque chose dans la FAQ qui resemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Form_NomDuSousForm.Champ_AfterUpdate
    alors j'ai fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Call ProduitsClient_VoyageProduitClient_DblClick
                        'Call Form_NomDuSousForm.Champ_AfterUpdate
     
                        'Private Sub Date_Départ_Effective_DblClick(Cancel As Integer)
     
    DoCmd.OpenForm "CalendrierVoyageProduits", acNormal, , , , , "VoyageProduitClient![Date_Départ_Effective]"
     
    End Sub
    Mais bien sur ça ne marche pas... Je dois avouer que je ne sais absolument pas comment fonctionne ce "Call".

    Quelqu'un pourrait-il m'aiguiller?

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Form_VoyageProduitClient.DblClick
    Form_VoyageProduitClient est le nom du module de classe lié au formulaire ; tu peux voir son nom dans l'explorateur de projet de l'editeur vba

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    Mais si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Form_VoyageProduitClient.DblClick
    Ce n'est plus mon champs date qui est double clické...

    En fait je cherche à faire en sorte que mon code (ci dessous) fonctionne même lorsque le formulaire VoyageProduitClient est en sous formulaire... Le principal étant ProduitsClient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Date_Départ_Effective_DblClick(Cancel As Integer)
    DoCmd.OpenForm "CalendrierVoyageProduits", acNormal, , , , , "VoyageProduitClient![Date_Départ_Effective]"
    End Sub
    En fait la base de l'erreur vient du fait que lorsque VoyageProduitClient est ouvert en tant que sous formulaire,
    - Je double click sur le champ date pour ouvrir le formulaire CalendrierVoyageClient
    -Je sélectionne une date dans le controle.Calendar
    -Je click sur le bouton Ok (btnOK)
    Et la j'ai une erreur
    Erreur d'exécution '2450'
    Impossible de trouver le formulaire 'VoyageProduitClient' auquel il est fait référence dans une expression de macro ou un code visual basic.
    Cette erreur n'est présente QUE lorsque le formulaire VoyageProduitClient est en sous formulaire...

    Mon code de click sur le btnOK est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub btnOK_Click()
    Dim strForm As String, strChamp As String
    Dim intI As Integer
     
    If Not IsNull(Me.OpenArgs) Then
        ' Identifier les champs
        intI = InStr(1, Me.OpenArgs, "!", vbTextCompare)
        If intI <> 0 Then
            strForm = Left&#40;Me.OpenArgs, intI - 1&#41;
            strChamp = Mid&#40;Me.OpenArgs, intI + 1&#41;
     
            ' Affecter la date au champ passé en argument
            Forms&#40;strForm&#41;&#40;strChamp&#41; = Me!Calendrier.Value
        End If
    End If
     
    ' Fermer le formulaire
    DoCmd.Close
    End Sub
    Et l'erreur se situe ici:
    Forms(strForm)(strChamp) = Me!Calendrier.Value

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Citation Envoyé par SpyesX
    Mais si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Form_VoyageProduitClient.DblClick
    Ce n'est plus mon champs date qui est double clické...
    Alors pour le double click sur un champ tu mets le nom de la routine qui correspond :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Form_VoyageProduitClient.Date_Départ_Effective_DblClick
    Pour atteindre un contrôle d'un sous-formulaire je t'invite à regarder dans la FAQ.

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    Voilà ce que j'ai fais... mais ça ne marche pas car je ne sais pas utiliser "str". (J'ai récupéré ce petit code sur les sources d'un site mais ils n'expliquent pas plus que ça comment ça marche. )
    Du coup pour atteindre le controle du sous form avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Forms&#40;strSousForm&#41;&#40;strForm&#41;&#40;strChamp&#41; = Me!Calendrier.Value
    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub btnOK_Click&#40;&#41;
    Dim strSousForm As String, strForm As String, strChamp As String
    Dim intI As Integer
     
    If Not IsNull&#40;Me.OpenArgs&#41; Then
        ' Identifier les champs
        intI = InStr&#40;1, Me.OpenArgs, "!", vbTextCompare&#41;
        If intI <> 0 Then
     
            strSousForm = Left&#40;Me.OpenArgs, intI - 1&#41;
            strForm = Mid&#40;Me.OpenArgs, intI - 1&#41;
            strChamp = Right&#40;Me.OpenArgs, intI + 1&#41;
     
            ' Affecter la date au champ passé en argument
            Forms&#40;strSousForm&#41;&#40;strForm&#41;&#40;strChamp&#41; = Me!Calendrier.Value
           ''''''''''''''''''''''''''''
           'Forms!&#91;ProduitsClient&#93;!&#91;VoyageProduitClient&#93;.Form!&#91;MaZoneDeText&#93;
     
        End If
    End If
     
    ' Fermer le formulaire
    DoCmd.Close
    End Sub

  6. #6
    Membre du Club

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 117
    Points : 65
    Points
    65
    Par défaut
    Comment puis-je appliquer ce code tuto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!&#91;NomFormulaire&#93;!&#91;NomSousFormulaire&#93;.Form!&#91;MaZoneDeText&#93;
    à monde code à moi qui n'est sensiblement pas le même puisqu'il doit resembler à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms&#40;strSousForm&#41;&#40;strForm&#41;&#40;strChamp&#41; = Me!Calendrier.Value

Discussions similaires

  1. [AC-2003] Problème avec des sous-formulaires
    Par maringot dans le forum IHM
    Réponses: 7
    Dernier message: 11/12/2009, 13h51
  2. Réponses: 2
    Dernier message: 29/05/2009, 18h01
  3. Problème avec un sous-formulaire
    Par karinl dans le forum IHM
    Réponses: 4
    Dernier message: 11/07/2008, 11h24
  4. Problème père-fils avec un sous formulaire
    Par beegees dans le forum IHM
    Réponses: 4
    Dernier message: 27/05/2007, 13h07
  5. Problème de lenteur avec 2 sous-formulaires
    Par picatchou dans le forum Access
    Réponses: 1
    Dernier message: 29/01/2007, 08h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo