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 :

Condition where : Ouvrir un enregistrement et pointer sur un renregistrement précis de son sous-formulaire [AC-2010]


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut Condition where : Ouvrir un enregistrement et pointer sur un renregistrement précis de son sous-formulaire
    Bonjour,

    J'ai un fomulaire de recherche qui se nomme "F_RappelAction" composé d'un sous-formulaire "F_RappelAction-AttenteRep"
    Photo ci-dessous :
    Nom : F_RappelAction.jpg
Affichages : 1228
Taille : 97,5 Ko

    Je souhaiterai en cliquant sur le champs "projet" du sous-formulaire "F_RappelAction-AttenteRep" ouvrir le formulaire nommé "projet" et pointer directement sur l'enregistrement "NAuto" de son sous-formulaire nommé "ProjetSousFormHistorique"

    Comment puis-je rédiger cette condition where ?

    En vous remerciant pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Voici le formulaire projet à ouvrir :
    Nom : projet.JPG
Affichages : 1171
Taille : 95,4 Ko

  3. #3
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Si ton formulaire "Projet" est basé sur une table ou une requête, a l'ouverture de ce dernier, passe la condition where suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acDesign,,"NAuto=" & NAuto
    @+


    Pensez au tag

  4. #4
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour Didier,
    merci pour ta réponse je vais essayer ce code en début d'après midi

    quel est la partie de ce code qui référence au [NAuto] et au no de projet [projet] qui permettront d'ouvrir le projet via le form "projet" en fonction de ligne sélectionnées sur le formulaire de recherche "F_RappelAction-AttenteRep" ?

    merci à toi

  5. #5
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    quel est la partie de ce code qui référence au [NAuto] et au no de projet [projet] qui permettront d'ouvrir le projet via le form "projet" en fonction de ligne sélectionnées sur le formulaire de recherche "F_RappelAction-AttenteRep" ?
    Je ne comprends pas ta question.

    Je souhaiterai en cliquant sur le champs "projet" du sous-formulaire "F_RappelAction-AttenteRep" ouvrir le formulaire nommé "projet" et pointer directement sur l'enregistrement "NAuto" de son sous-formulaire nommé "ProjetSousFormHistorique"
    Tu dis vouloir ouvrir un formulaire "Projet" en cliquant sur le champ "Projet" du sous formulaire "F_RappelAction-AttenteRep" et dans ta capture d'écran on voit un champ "NAuto" et un autre "Projet".
    J'en déduit donc que le NAuto contient le N° du projet ?
    Quand tu es sur une ligne dans ce sous formulaire le champ Nauto affiche bien le N° de chaque projet ?
    Donc automatiquement, si tu met du code pour ouvrir ton formulaire "projet", en lisant le contenu du champ "NAuto" il récupérera le N° concerné.
    Et donc voila pourquoi, il faut reconstruite la condition Where d'ouverture du formulaire, avec le contenu de la zone NAuto.
    Le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acDesign,,"NAuto=" & NAuto
    Si tu est sur une ligne ou le N° projet est égale à 125 par exemple la condition where passé en paramètre sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acDesign,,"NAuto=125"
    Etc ...
    @+


    Pensez au tag

  6. #6
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    ça ne fonctionne pas :-(

    En fait il faut que ça ouvre le formulaire "projet" en fonction du n° de projet indiqué dans le champ "projet" du formulaire de recherche "F_RappelAction-AttenteRep" et en plus que l'on puisse pointer sur l'enregistrement du sous-formulaire "ProjetSousFormHistorique" du formulaire "projet"
    La clef principal de la table projet est : projet
    La clef principal de la table en lien avec la table projet s'affichant dans le sous-formulaire "ProjetSousFormHistorique" dont est : NAuto

    J'espère que mes explications ne sont pas trop confuses...

  7. #7
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    J'espère que mes explications ne sont pas trop confuses...
    Il faut essayer d'^tre le plus explicit possible afin d'éviter les erreurs du à un mauvais interprétation

    ça ne fonctionne pas :-(
    C'est normal si la clé est "projet" et non pas "NAuto"

    En fait il faut que ça ouvre le formulaire "projet" en fonction du n° de projet indiqué dans le champ "projet" du formulaire de recherche "F_RappelAction-AttenteRep"
    ...
    La clef principal de la table projet est : projet
    Donc si je comprend bien dans le champ "Projet", j'ai un numérique qui représente le N° unique du projet ?

    Dans ce cas il faut faire la condition where ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet
    et en plus que l'on puisse pointer sur l'enregistrement du sous-formulaire "ProjetSousFormHistorique" du formulaire "projet"
    La clef principal de la table en lien avec la table projet s'affichant dans le sous-formulaire "ProjetSousFormHistorique" dont est : NAuto
    Chaque chose en son temps.
    Ouvron déjà le formulaire projet sur le bon projet
    Ensuite la relation père fils permetra automatiquement d'afficher les bonnes information dans le sous formulaire "ProjetSousFormHistorique"
    La question, est : peux tu avoir plusieurs lignes dans ce sous formulaire ?
    Si oui, regarde ce petit lien ou j'explique comment se positionner directement sur le bon enregistrement dans un formulaire: ici

    Ensuite l'appel à cette procédure pourra se faire à l'ouverture de ton formulaire.
    Tu peux passer en paramètre lors de l'ouverture de ton formulaire le champ NAuto avec la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet,,,[NAuto]
    Ensuite à l'ouverture de ton formulaire "Projet", tu peux tester si un argument à été passé ou pas afin de te positionner le cas échéant sur ta bonne ligne.
    Avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "Nauto", Me.OpenArgs, vbLong
        End If
    End Sub
    @+


    Pensez au tag

  8. #8
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Merci beaucoup pour ces explications et nouvelles propositions mais ça ne fonctionne pas :-(

    Je n'arrive pas à ouvrir le form "projet" en fonction de la ligne du form recherche feuille de donnée contenant le n° de projet même en remplaçant "acDesign" par "acNormal" car le formulaire s'ouvrait en mode création.

    Du coup j'ai essayé d'ouvrir le formulaire comme j'ai l'habitude de le faire via les macros intégrés, mais j'aurai bien aimé le faire en vba.
    Voici ma macro :
    Nom : MacroConditionWhere.JPG
Affichages : 1106
Taille : 33,1 Ko


    Et j'ai essayé de placer le code que tu proposais à l'ouverture du formulaire "projet"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Open(Cancel As Integer)
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet,,,[NAuto]
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "Nauto", Me.OpenArgs, vbLong
        End If
    End Sub
    Voici le chemin du champ projet dans le formulaire de recherche : Formulaires![F_RappelAction]![Type CR Consult/Modif].Formulaire![projet]

    Merci pour ton aide

  9. #9
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,
    Les conditions where de tes macros semblent fausses car elle contienne une egalite de trop à la fin :/
    Pour que la syntaxe de l'ouverture du formumaire marche il faut que tu la lance depuis ton sous formulaire.
    J'avais cru comprendre que quand tu cliquais sur ta zone projet de ton sous formulaire tu ouvrais le formulaire projet ?
    Mais où as tu copier ce code ?
    Dans ton formulaire principal ou ton sous formulaire ?
    Car selon les cas la syntaxe pour faire référence à tes zone "projet" et "NAuto" ne sera pas la même
    @+


    Pensez au tag

  10. #10
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Les 2 conditions where fonctionnent bien mais j'aurai souhaité savoir le faire en vba, la condition permet juste d'ouvrir le formulaire "projet" s'il s'agit d'un projet ou le formulaire "CR" s'il s'agit d"un compte-rendu de séance (si la "cocheCR" =-1)
    Je déclenche l'ouverture du formulaire "projet" en cliquant sur le champ "projet" du sous formulaire de recherche "F_RappelAction-AttenteRep"

  11. #11
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    C'est bien gentil de vouloir faire du Vba et recopier le code des autres mais il fait aussi essayer de le comprendre
    Je n'avais pas bien lu ton précédent message.
    Je ne pense pas t'avoir donné le code suivant en une seule fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Open(Cancel As Integer)
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet,,,[NAuto]
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "Nauto", Me.OpenArgs, vbLong
        End If
    End Sub
    Et j'ai essayé de placer le code que tu proposais à l'ouverture du formulaire "projet"
    En effet le code ne peux pas marcher car la première ligne "ouvre" le formulaire "projet" !!!
    Donc cette ligne doit être placé à la place de ta Macro !

    Ensuite lorsque le formulaire s'ouvre , alors il va se placer sur la bonne ligne de ton sous formulaire !
    Il faut essayer de comprendre plutôt que de juste recopier et poser les questions si tu ne comprends pas ce qu'une ligne de code réalise.
    Donc à la place de ta macro tu dois avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If [cocheCr]<>-1 then
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet,,,[NAuto]
    Else
    docmd.OpenForm "CR",acDesign,,"Projet=" & Projet,,,[NAuto]
    Enfin if
    End Sub
    Et sur ouverture de ton formulaire uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "Nauto", Me.OpenArgs, vbLong
        End If
    End Sub
    Bonne continuation et bon courage
    @+


    Pensez au tag

  12. #12
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Haut les coeurs !!!
    Je suis navré si je t'ai donné une si mauvaise impression
    Tu as raison sur un point j'ai certainement voulu aller un peu vite sans chercher à bien comprendre :-(

    Le code pour ouvrir le form "projet" ou "CR" en fonction du n° de projet et si la coche CR est cochée ou non ne fonctionne pas même en remplaçant "acDesign" par "acNormal" en "Enfin if" par "End if"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If [cocheCr]<>-1 then
    docmd.OpenForm "Projet",acDesign,,"Projet=" & Projet,,,[NAuto]
    Else
    docmd.OpenForm "CR",acDesign,,"Projet=" & Projet,,,[NAuto]
    Enfin if
    End Sub
    Afin de bien comprendre ce code, pourrais-tu détailler la fonction de chaque élément du code cela m'aiderai beaucoup pour bien comprendre cette fonction where ?

    Merci beaucoup pour ton aide :-)

  13. #13
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Bonjour,

    Effectivement c'est bien "End If"
    Mon téléphone avait du faire une correction automatique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If [cocheCr]<>-1 then ' c'est le même test que tu fait dans ta macro
    docmd.OpenForm "Projet",acNormal,,"Projet=" & Projet,,,[NAuto] ' on ouvre le formulaire "projet" avec la condition where suivante :
    ' Le projet (numéro) est égale au contenu de ta zone [Projet] de ton sous formulaire comme dans ta macro , et enplus je lui passe le paramètre
    '[NAuto], pour qu'il puisse se positionner sur la bonne ligne dans ton sous formulaire
    Else
    docmd.OpenForm "CR",acNormal,,"Projet=" & Projet,,,[NAuto] 'meme ouverture que la ligne précédente mais avec le formulaire CR au lieu de projet (comme dans ta macro)
    Enfin if
    End Sub
    "acDesign" Il ne faut pas utiliser ce mode car c'est le mode création des formulaires

    La question , c'est surtout, ou as tu mis ce code ??
    @+


    Pensez au tag

  14. #14
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Merci beaucoup pour ces explications bien détaillées mais le formulaire projet s'ouvre mais vide sans ouvrir le n° de projet correspondant :-(
    Petite précision le n° de projet est un champ alphanumérique ex : P-QLT-0001

  15. #15
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    c'est donc normal que cela ne marche pas il faut utilisé la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acNormal,,"Projet='" & Projet & "'",,,[NAuto]
    Afin d'encadrer le numéro du projet par des guillemets simples

    Il me semble que j'en avais parlé dans un post auparavant
    @+


    Pensez au tag

  16. #16
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour,

    Merci beaucoup pour ces explications.
    Cela fonctionne je peux ouvrir le formulaire correspondant au n° de projet selectionné sur le formulaire de recherche.
    Par contre celui-ci ne s'ouvre pas en se positionnant sur l'enregistrement du sous-formulaire " en fonction du NAuto

    J'ai essayé d'intégrer le code que tu proposais à l'ouverture du formulaire "projet"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "NAuto", Me.OpenArgs, vbLong
        End If
    End Sub
    Mais un message d'erreur apparaît : Erreur de compilation : Sub ou Function non définie
    Selon toi d'où vient le problème ?

    Pourrais-tu également m'expliquer comme tu l'as fait sur la condition where comment doit fonctionner le code ci-dessus avec la fonction "OpenArgs" ?

    En te remerciant pour ton aide

  17. #17
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    Mais un message d'erreur apparaît : Erreur de compilation : Sub ou Function non définie
    Selon toi d'où vient le problème ?
    Je présume donc que tu n'avais pas vu dans un de mes précédents post se message :
    Si oui, regarde ce petit lien ou j'explique comment se positionner directement sur le bon enregistrement dans un formulaire: ici
    Il faut que tu récupère et copie la procédure "positionne" dans ce post : ici

    Pourrais-tu également m'expliquer comme tu l'as fait sur la condition where comment doit fonctionner le code ci-dessus avec la fonction "OpenArgs" ?
    Dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.OpenForm "Projet",acNormal,,"Projet='" & Projet & "'",,,[NAuto]
    Je passe en paramètre (le dernier) la valeur contenu dans le Champ [NAuto] de ton sous formulaire au moment de l'ouverture.

    Ensuite lorsque le formulaire "Projet" s'ouvre, cette valeur est contenu dans le formulaire dans la propriété OpenArgs.
    Ainsi dans le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "NAuto", Me.OpenArgs, vbLong
        End If
    End Sub
    Je teste si cette valeur a bien été saisie et/ou transmise et dans ce cas je lui demande d'utilisé la procedure "positionne" pour que mon sous formulaire "ProjetSousFormHistorique" se retrouve bien sur la bonne ligne correspondant à mon NAuto saisi.
    @+


    Pensez au tag

  18. #18
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour Didier,

    J'ai quelques questions pour adapter au mieux le code que tu as posté le 08/04.
    Où dois-je placer ce code ? sur l'ouverture de mon formulaire ou dans un module ?

    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
    Sub Positionne(MonForm As Form, ControlName As String, ValeurRech, TypeValeur As Integer)
    On Error Resume Next
    Dim MonClone As Recordset
    Dim Crits As String
        Set MonClone = MonForm.RecordsetClone
        Crits = "[" & ControlName & "]="
        Select Case TypeValeur
            Case vbString
                Crits = Crits & "'" & ValeurRech & "'"
            Case vbDate
                Crits = Crits & "#" & Format(ValeurRech, "mm/dd/yyyy") & "#"
            Case vbLong
                Crits = Crits & ValeurRech
        End Select
        MonClone.FindFirst Crits
        MonForm.BookMark = MonClone.BookMark
        MonClone.Close
    End Sub

    Dans la première ligne de code dois-je indiquer à la place de "MonForm" le nom de mon formulaire "projet" ou CR" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Positionne(MonForm As Form, ControlName As String, ValeurRech, TypeValeur As Integer)
    Est-ce que dans mon cas le code pourrait resembler à:
    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
    Sub Positionne(projet As Form, ControlName As String, NAuto, TypeValeur As Integer)
    On Error Resume Next
    Dim MonClone As Recordset
    Dim Crits As String
        Set MonClone = projet.RecordsetClone
        Crits = "[" & ControlName & "]="
        Select Case TypeValeur
     
            Case vbLong
                Crits = Crits & NAuto
        End Select
        MonClone.FindFirst Crits
        MonForm.BookMark = MonClone.BookMark
        MonClone.Close
    End Sub
    A quoi correspond : ControlName
    Et à quoi correspond : MonClone

    Merci à toi pour ton aide
    Franck

  19. #19
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut
    J'ai quelques questions pour adapter au mieux le code que tu as posté le 08/04.
    Où dois-je placer ce code ? sur l'ouverture de mon formulaire ou dans un module ?
    Dans un module

    Non tu ne dois pas modifier une seule ligne de cette procédure.
    Je crois que tu as de grosse méconnaissance du code

    Tout est dans le passage des paramètres.
    En fait dans mon post précédent, je t'avais donné la solution et tu dois utiliser le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Positionne [ProjetSousFormHistorique].Form, "NAuto", Me.OpenArgs, vbLong
    C'est lui qui va remplacer dans cette procédure "ValeurRech" par le contenu qui se trouve dans me.OpenArgs
    C'est lui aussi qui va remplacer "ControlName" par "NAuto" et "MonForm" par "[ProjetSousFormHistorique].Form" car c'est bien dans le sous formulaire que tu veux te positionner !

    A quoi correspond : ControlName
    Au nom du champ sur lequel on veux faire la recherche pour pouvoir se positionner (c'est un paramètre).

    Et à quoi correspond : MonClone
    C'est un objet recordset qui contient l'équivalent de tous les enregistrement de mon sous formulaire passer en paramètre afin de rechercher la ligne sur laquelle je veux me positionner !

    Et comme je te l'ai déjà dit, ce code doit être mis dans tes formulaires "Projet" et "CR" dans l'événement "sur ouverture":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Open(Cancel As Integer)
        If Me.OpenArgs <> "" Then
            Positionne [ProjetSousFormHistorique].Form, "NAuto", Me.OpenArgs, vbLong
        End If
    End Sub
    @+


    Pensez au tag

  20. #20
    Membre régulier
    Homme Profil pro
    Responsable qualité
    Inscrit en
    Mars 2012
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 341
    Points : 111
    Points
    111
    Par défaut
    Bonjour Didier,

    Merci pour toutes tes explications qui m'aident beaucoup et oui comme tu l'as remarqué mon niveau en vba n'est vraiment pas élevé ...

    ça fonctionne tip top pour l'ouverture du formulaire CR mais pas pour le formulaire projet pour lequel le positionnement reste sur le 1er NAuto du sous-formulaire :-(
    J'ai chercher mais ne trouve pas de différence entre ces 2 formulaires d'autant plus qu'ils sont bien conçus sur la base des mêmes tble seul la présentation change

    Merci pour tout
    Franck

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] Ouvrir un enregistrement en cliquant sur l' ID
    Par johanaquatique dans le forum IHM
    Réponses: 8
    Dernier message: 17/06/2009, 13h51
  2. Pointer sur une cellule et non son contenu
    Par MiXinG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/04/2009, 12h04
  3. Réponses: 5
    Dernier message: 06/05/2007, 18h52
  4. Réponses: 2
    Dernier message: 24/04/2007, 08h03
  5. Réponses: 3
    Dernier message: 18/07/2006, 12h16

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