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 formulaire sur enregistrement séléctionné dans un autre formulaire


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Homme Profil pro
    cadre
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : cadre

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut ouvrir formulaire sur enregistrement séléctionné dans un autre formulaire
    Bonjour,

    Etant débutant en Access, je n'arrive pas bien à donner un titre précis à ma demande. Voici mon problème (je modifie le fond pour que ça soit plus parlant pour vous):

    J'ai un formulaire avec 2 onglets (A et B) comprenant chacun un sous formulaire. Il s'agit du "même" sous formulaire dans les deux onglets. Dans le A il est en affichage feuille de données et dans le B en affichage "simple" (je ne connais pas le terme en français mais il s'agit de l'affichage basique).

    Disons que mon formulaire est une classe et que mon sous formulaire A est la liste des élèves de la classe (affichage feuille de données). Mon sous formulaire B affiche les élèves un par un (affichage simple).

    L'intérêt est de visualiser rapidement les élèves de la classe sur l'onglet A et de pouvoir voir le détail pour un élève (d'un champ Mémo par exemple) sur l'onglet B (plus lisible que dans le format feuille de données) et le modifier si besoin.

    Objectif: créer un bouton sur l'onglet A. Lorsque l'on clique sur ce bouton, on arrive sur l'onglet B et sur l'élève sélectionné dans l'onglet A feuille de données.

    Faire le bouton et aller sur l'onglet B c'est ok. Mais comment lui faire afficher l'enregistrement sélectionné à la souris sur l'onglet A ?

    PS: ma clé primaire, présente dans les deux onglets est l'ID de l'élève qu'on appellera "ID_eleve"

    Merci pour votre aide.

    Nicolas

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Un code du genre en utilisant la propriété "Bookmark" devrait faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub btnafficherdetails_Click()
    With Me.S_F_Eleves_B.Form.RecordsetClone
        .FindFirst "[Id_Eleve]=" & Me.S_F_Eleves_A.Form.Id_Eleve
        If Not .NoMatch Then
            Me.S_F_Eleves_B.Form.Bookmark = .Bookmark
        End If
        Me.TonOngletB.SetFocus
    End With
    End Sub
    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    cadre
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : cadre

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut re
    Ok merci beaucoup, j'essaie ça demain.

    Peux-tu m'expliquer simplement ce qu'est recordsetclone et bookmark stp?

    J'ai trouvé l'aide de microsoft pour les deux mais c'est un peu high level pour moi je crois ces propriétés.

    Ce que je comprends:
    on recherche l'id eleve de A sur un clone de B et si on le trouve alors on lui dit que B bookmark = clone de B bookmark.
    (puis on met le focus sur B)
    et bookmark c'est la façon d'identifier de façon unique un enregistrement

    C'est encore un peu brouillon, mais c'est en forgeant qu'on devient forgeron... encore merci.
    Si demain ça fonctionne je mets résolu.

    Bonne soirée

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Tu as bien compris
    Bookmark est un signet qui identifie de manière unique un enregistrement.

    Chaque formulaire a une source que l'on appelle RecordSet.
    On peut travailler sur la source du formulaire en créant un clone (RecordSetClone)

    FindFirst te permet de trouver la première occurrence de la valeur recherche (ici le nom de l'élève A) dans le jeu d'enregistrements du formulaire B

    NoMatch signifie : ne pas trouver ... donc If Not NoMatch signifie si tu trouves ... tu positionnes le signet dans le jeu d'enregistrements

  5. #5
    Candidat au Club
    Homme Profil pro
    cadre
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : cadre

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut re
    Ca fonctionne!

    Par contre, j'avais des ! au lieu des . et ça ne fonctionnait pas. Ce n'est pas la même chose?

    Merci beaucoup à vous deux. Résolu!

    EDIT:

    J'ai voulu changer le nom de mon sous-formulaire. Je l'ai changé aussi en VBA mais j'ai maintenant une erreur "access can't find the field | referenced to in your expression"

    Comment cela se fait-il svp?

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonsoir,

    Normalement, t'as pas besoin de changer le nom du sous-formulaire dans le code VBA.
    Le nom du sous-formulaire S_F_Eleves indiqué dans Me.S_F_Eleves_B.Form.RecordsetClone est en fait le nom du sous-formulaire dans le container du sous-formulaire (et non le nom du sous-formulaire dans le volet de navigation). Tu l'as dans la propriété Autres du sous-formulaire en le sélectionnant, sinon, l'intelliscence te le propose en tapant Me.
    Je te conseille de lire le tuto de référence ci-joint pour comprendre les appels au sous-formulaire.

    Cordialement,

  7. #7
    Candidat au Club
    Homme Profil pro
    cadre
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : cadre

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 2
    Points
    2
    Par défaut re
    Merci, je comprends mieux. Je regarde tout ça dans la semaine mais affaire résolue!

    Encore grand merci, je me sentais vraiment bloqué pour un truc "tout bête"...

    Bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/04/2015, 21h26
  2. Réponses: 1
    Dernier message: 25/05/2011, 15h43
  3. [ZF 1.7] Récupérer valeur d'un enregistrement saisi dans un autre formulaire
    Par CinePhil dans le forum Zend_Form
    Réponses: 24
    Dernier message: 11/02/2011, 09h42
  4. Réponses: 13
    Dernier message: 21/08/2009, 17h56
  5. Réponses: 5
    Dernier message: 15/06/2007, 13h26

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