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

VBA Access Discussion :

Ouvrir un formulaire par un sous-formulaire


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 72

    Informations forums :
    Inscription : Août 2007
    Messages : 133
    Points : 74
    Points
    74
    Par défaut Ouvrir un formulaire par un sous-formulaire
    Bonjour a tous,

    je cherche a ouvrir un formulaire en fonction d'une donnee d'un de ces sous-formulaire ...
    A ce jour j'ouvre le formulaire puis je recherche le sous-formulaire...

    N'y a-t-il pas moyen d'ouvrir directement le bon formulaire avec le sous-formulaire souhaite?

    par avance merci.

  2. #2
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut Infos
    Bonjour.
    Quel est le code sur lequel on pourrait t'aider ?
    Cordialement.

  3. #3
    Membre régulier
    Inscrit en
    Août 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Âge : 72

    Informations forums :
    Inscription : Août 2007
    Messages : 133
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    Dans un 1er temps j'ouvre le formulaire principal "StyleOrder"
    Une fois que celui-ci est ouvert je recherche dans "Order" la commande recherchee...

    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
    Dim WhichOrderNrSystem As Long
    Dim WhichStyleSystem As Long
     
    WhichOrderNrSystem = Me![WhichAllOrder]
    WhichStyleSystem = DLookup("StyleSystem", "Order", "OrderNrSystem = " & WhichOrderNrSystem)
     
        '------------------------------------------------------------------ Style
        DoCmd.OpenForm "StyleOrder", , , "StyleSystem = " & WhichStyleSystem
        Forms![StyleOrder].SetFocus
        Forms![StyleOrder]![StyleSystem].SetFocus
        '------------------------------------------------------------------ Order
        Forms![StyleOrder]![Order].SetFocus
        Forms![StyleOrder]![Order].Form![OrderNrSystem].SetFocus
        DoCmd.FindRecord WhichOrderNrSystem, , , , , acCurrent
        Forms![StyleOrder]![Order].Form![RemarkCustomer].SetFocus
        Forms![StyleOrder]![WhichAllOrder] = ""
            '------------------------------------------------------------ Relicat
        Forms![StyleOrder]![Order].Form![Bt_Relicat].Caption = "To be ordered: " & DLookup("QuantityInitial", "GetRelicat", "OrderRank = 0 ") - DSum("QuantityDelivered", "GetRelicat") & " pcs (" & DCount("OrderNrCustomer", "GetRelicat") - 1 & " relicats)"

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    J'ai à peu près le même soucis. Sauf qu'en ce qui me concerne, je cherche à mettre à jour une propriété d'un formulaire sur base d'un select.

    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
    Public Sub selectLangue(intLangue As Integer, FormName As String)
        Dim strQuery As String
        MsgBox intLangue & " " & FormName
        Select Case (intLangue)
            Case Is = 1
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingNDL " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingNDL;"
            Case Is = 2
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingFR " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingFR;"
            Case Is = 3
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingUK " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingUK;"
        End Select
     
        [Forms]![FormName]!cboLangues.RowSource = strQuery
    End Sub
    Je pensais naïvement que ma variable FormName pourrait être utilisée dans la dernière instruction de mon SUB... mais ce n'est pas le cas. Je reçois systématiquement une erreur selon laquelle le formulaire n'est pas trouvé.

    Si je trouve une solution, je te tiens au courant, ça pourra peut-être t'aider à résoudre ton problème.

  5. #5
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut
    Bonjour.

    @Chris81 : Je suis absolument confus, mais je ne comprends pas ton code; la succession de .SetFocus me suggère que l'essentiel des actions est renseigné directement au niveau des contrôles, mais ayant clairement atteint ma limite de compétences, je ne m'avancerai pas plus.

    @Geache : Cela ne semble pas naïf , je pense qu'il te faut simplement activer le formulaire en question avant d'affecter les valeurs à la liste déroulante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        End Select
     
    DoCmd.OpenForm FormName
    Forms.FormName.cboLangues.RowSource = strQuery
    Forms.FormName.cboLangues.Requery
     
    End sub
    Cordialement.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Bonjour,

    @ GillesDeVuif :

    Ce qui m'étonne alors, c'est que le formulaire est déjà ouvert. Le code que je renseigne fait partie d'un module. Et le formulaire fait appel à ma procédure SelectLangue qui se trouve dans ce module.

    Ou alors, je dois ré-activer le formulaire dans ma procédure ?

    Bonne journée.

  7. #7
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut
    Bonjour Geache.
    si ton formulaire est déjà actif, tu ne devrais pas avoir de soucis.
    je n'avais pas fait attention à la nature de Formname : je crains que la syntaxe Form.FormName ne s'accomode pas d'une variable : il te faut pointer le nom réel de ton formulaire.
    Peut-être comme ça :

    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
    Public Sub selectLangue(intLangue As Integer)
     
    Dim strQuery1, StrQuery2 As String
    MsgBox intLangue '& " " & FormName
    StrQuery1 = "SELECT IdLangue, slOmschrijving"
    StrQuery2 = "FROM SysLangues ORDER BY slOmschrijving" 
     
    Select Case (intLangue)
            Case Is = 1
                strQuery1 = StrQuery1 & "NDL " & StrQuery2 & "NDL;" 
            Case Is = 2
                strQuery1 = StrQuery1 & "FR " & StrQuery2 & "FR;" 
            Case Is = 3
               strQuery1 = StrQuery1 & "UK " & StrQuery2 & "UK;" 
        End Select
     
    Forms.ReelNomDeTonFormulaire.cboLangues.RowSource = strQuery1
    Forms.ReelNomDeTonFormulaire.cboLangues.Requery
     
    End Sub

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 185
    Points : 173
    Points
    173
    Par défaut
    Bonjour Gilles,

    Mon soucis, c'est que je dois pouvoir changer la langue de travail à partir de n'importe quel formulaire. Raison pour laquelle j'avais placé cette procédure dans un module pour ne pas devoir la copier coller dans chacun des formulaires.

    Je n'ai rien trouvé, effectivement, qui me permette d'utiliser un nom variable pour mon formulaire dans la forme Forms![NomFormulaire]!...

    Par contre, j'ai trouvé une autre solution, c'est de transformer ma procédure en fonction, comme ceci :

    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
    Public Function selectLangue(intlangue As Integer) As String
     
        Dim strQuery As String
     
        Select Case (intlangue)
            Case Is = 1
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingNDL " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingNDL;"
            Case Is = 2
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingFR " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingFR;"
            Case Is = 3
                strQuery = "SELECT SysLangues.IdLangue, SysLangues.slOmschrijvingUK " _
                         & "FROM SysLangues " _
                         & "ORDER BY SysLangues.slOmschrijvingUK;"
        End Select
     
        selectLangue = strQuery
    End Function
    et de changer la propriété de mon combobox par appel de la fonction de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub cboLangues_AfterUpdate()
        cboLangues.RowSource = selectLangue(cboLangues)
        ' Call changeLangueTravail(cboLangues)
    End Sub
    Mais cela ne résout pas le problème de Chris81.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2015, 09h21
  2. Réponses: 5
    Dernier message: 06/08/2008, 15h11
  3. Réponses: 0
    Dernier message: 12/05/2008, 19h40
  4. Réponses: 4
    Dernier message: 04/05/2007, 12h23
  5. Lien sous-formulaire à un autre sous-formulaire
    Par jehhej dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2006, 08h05

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