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

IHM Discussion :

Atteindre un élément d'un sous formulaire depuis un autre formulaire en double click


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 64
    Points : 33
    Points
    33
    Par défaut Atteindre un élément d'un sous formulaire depuis un autre formulaire en double click
    Bonjour à tous

    Je suis en train de mettre à jour la base de données de ma boite et bute sur un truc surement simple mais je n'y arrive pas ...

    J'ai une fiche client (F_CLIENTS) qui regroupe les contacts de ce client et par contact les actions menées (cf mon image)
    Nom : fiche client.jpg
Affichages : 267
Taille : 810,3 Ko

    J'ai créé un historique des actions menées auprès de tous les clients (voir image)
    Nom : historique client.jpg
Affichages : 306
Taille : 775,5 Ko
    J'aimerais pouvoir en double cliquant sur le nom du contact chez le client ouvrir le formulaire client (F_CLIENTS) et atteindre le contact sur lequel j'ai double cliqué, ce contact étant dans un sous formulaire (SsF_CLIENTS_Contacts)

    Pour atteindre le client pas de soucis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub NomClient_DblClick(Cancel As Integer)
        DoCmd.OpenForm "F_CLIENTS", , , "[NomClient] = '" & Me.NomClient & "'"
    End Sub
    Mais pour atteindre le contact double cliqué en utilisant cette méthode, ça ne marche pas !!!

    Merci d'avance de votre aide

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    D'abord il faut transmettre l'Id Contact. 2 méthodes possibles :
    1)Elle n'est pas très propre mais facile. Elle consiste à utiliser une variable globale pour ça.

    Dans un module standard en dessous 2 des lignes Option crée un variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim idContact as variant
    On l'initialise de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub NomClient_DblClick(Cancel As Integer)
        idContact = me.Idcontact
        DoCmd.OpenForm "F_CLIENTS", , , "[NomClient] = '" & Me.NomClient & "'"
    End Sub
    2) Celle-ci est nettement plus propre et plus simple car tu n'utilises pas de variable globale.
    Lorsque tu fais l'appel au formulaire tu transmets l'Id contact via le paramètre OpenArgs. Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub NomClient_DblClick(Cancel As Integer)
        DoCmd.OpenForm "F_CLIENTS", , , "[NomClient] = '" & Me.NomClient & "'",,,me.IdContact
    End Sub
    Comment se positionner sur le bon enregistrement ?
    Sur le Form_open de F_CLIENTS utiliser cette méthode
    1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if not isnull( idContact) then  'si quelque chose est transmis
    me.ctlOnglet = N° de page contact
    me.SsF_CLIENTS_Contacts.form.recordset.findfirst "IdContact=" & idContact
    idContact = null  'reinit la variable
    endif
    2) C'est un peu pareil à part qu'on utiliser openargs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if not isnull(me.OpenArgs) then  'si quelque chose est transmis
    me.ctlOnglet = N° de page contact
    me.SsF_CLIENTS_Contacts.form.recordset.findfirst "IdContact=" & me.OpenArgs
    'on ne réinitialise pas openArgs.
    endif
    Personnellement je préfère le openargs pour ce type d'utilisation.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Pour les onglets un peu fourni je te conseille s'utiliser des enum comme expliqué dans mon tuto :

    http://loufab.developpez.com/tutoriels/access/enumVBA/
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 64
    Points : 33
    Points
    33
    Par défaut
    Bonjour Loufgab et merci pour ton aide

    J'ai essayé ce que tu m'as écris mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Nom_DblClick(Cancel As Integer)
     DoCmd.OpenForm "F_CLIENTS", , , "[NomClient] = '" & Me.NomClient & "'", , , Me.Nom
        If Not IsNull(Me.OpenArgs) Then  'si quelque chose est transmis
            Me.Tab_InfoClients = 1
            Me.SsF_CLIENTS_Contacts.Form.Recordset.FindFirst "Nom=" & Me.OpenArgs
            'on ne réinitialise pas openArgs.
        End If
    End Sub
    Je ne comprends pas mon erreur.
    le débogeur s'arrrete en premier sur
    avec comme commentaire
    Erreur de compilation :Membre de méthode ou de données introuvable
    pourtant j'ai remplacé le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.ctlOnglet = N° de page contact
    par mes valeurs

    ???

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Tu as ratés une phrase importante :

    Sur le Form_open de F_CLIENTS utiliser cette méthode

    Si le openargs est une propriété d'un formulaire il est normal d'y faire référence dans celui-ci est non dans le code d'appel.
    Idem pour ton contrôle onglet, il n'est pas dans le formulaire où est ton code. fie-toi à ce que te propose VBA dans la liste déroulante du me., si ça n'y est pas c'est que ça n'existe pas à cet endroit.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Appeler un SUB d'un formulaire depuis un autre formulaire
    Par Zouzou1er dans le forum VBA Access
    Réponses: 7
    Dernier message: 24/08/2016, 15h00
  2. Réponses: 11
    Dernier message: 10/05/2010, 09h40
  3. Réponses: 2
    Dernier message: 15/04/2010, 10h30
  4. [AC-2003] Fermer un formulaire depuis au autre formulaire
    Par moilou2 dans le forum IHM
    Réponses: 5
    Dernier message: 08/07/2009, 18h24
  5. Réponses: 1
    Dernier message: 11/10/2008, 10h22

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