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 :

Mise à jour d'un Sous-Formulaire [AC-97]


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 55
    Points
    55
    Par défaut Mise à jour d'un Sous-Formulaire
    Bonsoir à tous

    Toujours débutant, je fais évoluer une appli Access97 (VB5) suivant les besoins des utilisateurs, et je commence à me débrouiller à force de trouver de bonnes pistes sur ce forum

    Là, je tombe sur un truc que je n'arrive pas à régler. J'espère que vous allez me comprendre :

    Un formulaire dispose d'une zone de liste avec des lignes (commandes-client) provenant d'une table. En cliquant sur une de ces lignes, cela met à jour en temps réel les détails de cette 'commande-client' dans un sous-formulaire situé au dessous, dans un onglet (le contenu de la commande).
    Ce n'est pas moi qui ai fait cela : j'ai bien regardé de partout, mais je ne sais pas trop comment est réalisé cela.

    Je mets quelques images en explication :

    Nom : A.PNG
Affichages : 211
Taille : 45,4 Ko

    Le sous formulaire :

    Nom : B.PNG
Affichages : 216
Taille : 43,3 Ko

    Dans un second onglet ('Dossier Commande" que l'on voit sur l'image 1), j'ai ajouté un sous-formulaire dont l'objectif est d'afficher les fichiers contenu dans le dossier (créé automatiquement par Access) de la commande.

    Actuellement, je met à jour ce sous-formulaire par un bouton de commande, avec ce code, grâce aux information glanées su ce forum, et sur ce post :


    https://grenier.self-access.com/acce...-table-access/


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim DOSSIER, STE As String
    Dim NUM As Variant
    NUM = Forms!CDCLI!ARNO      ' numero de la commande client'
    STE = Forms!CDCLI!SOCIETE   ' Nom du client
     
    DOSSIER = NUM & " - " & STE 'identification du dossier sur le serveur
     
    ListerFichiers "D:\Cdes CLIENTS\" & DOSSIER, "*.*"
     
    End Sub
    Alors ça marche bien, sauf qu'il faut que je quitte le formulaire CDCLI et que je le ré-ouvre pour que le sous-formulaire soit mis à jour ... mais une chose après l'autre

    Nom : Capture.PNG
Affichages : 249
Taille : 145,3 Ko

    Je voudrais que, tout comme le sous-formulaire contenant les détails de la commande (L_CDECLIsf) , ce sous-formulaire (tbl_Fichiers) contenant le contenu du dossier-client puisse se mettre à jour en temps-réel.

    J'ai essayé moultes instructions de mise à jour de ce genre en les mettant un peu partout, mais rien n'y fait ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sousform![tbl Fichiers sous-formulaire1].Requery
    Forms!tbl_Fichiers!Fichier = ""
    Merci pour vos bons conseils

    Phil

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 113
    Points : 124
    Points
    124
    Par défaut
    2 façons je pense d'y parvenir :

    Sans VBA:
    Si le contenu du sous-formulaire Dossier Commande est alimenté par une requête : pour rafraîchir automatiquement le contenu du sous-formulaire Dossier Commande, il faut que la requête qui alimente ce sous-formulaire utilise une condition allant chercher le id de la commande sélectionnée dans le formulaire Commande client. Tu peux le faire avec le QBE de Access en ouvrant en mode modification ton formulaire Commande client, puis en sélectionnant ton sous-formulaire Dossier Commande, dans ses propriété, tu accèdes à la rubrique Record Source de l'onglet Data. Tu modifies la requête en mettant une condition allant chercher le filtre dans le formulaire maître.

    Avec VBA:
    Au lieu d'exécuter le code VBA de ton bouton au clic sur le bouton, exécute le sur l'événement On Current du formulaire maître (c'est à dire à chaque fois que tu change d'enregistrement).

  3. #3
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup ! Je vais avancer avec ça.

    2 questions :

    1) Mon Access est en français. le 'On current', c'est bien "Sur Activation" ?

    2) dans mon cas, faut-il que je déclencher cette action sur le formulaire CDCLI ou sur la zone de liste LL, car c'est elle qui reçoit le clic ?

    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 55
    Points
    55
    Par défaut
    Bonjour elgordopresto

    J'espère avoir compris tes suggestions :

    Sans VBA :

    Je pense avoir fait ce que tu proposes, mais je n'arrive pas à remplir les champs Père et fils. Purtant, il me semble bien que les formulaires doivent rester indépendant ?

    Nom : sans VBA.PNG
Affichages : 162
Taille : 68,8 Ko


    Avec VBA :

    J'ai essayé de coller mon code dans tous les déclencheurs (après MAJ / Sur entrée/ etc ...) sans sucès. La par exemple, je l'ai collé après le code du clic de sélection de la commande ...

    Nom : Avec VBA.PNG
Affichages : 228
Taille : 145,8 Ko

    Merci pour ton aide

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 113
    Points : 124
    Points
    124
    Par défaut
    Bonjour Fildelyon,

    Essaies cela :

    Dans ton sous-formulaire, crée une procédure VBA en t'inspirant du code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub MAJFichiers(str as string)
     
    ListerFichiers str, "*.*"
    Me.Refresh
     
    End Sub
    Ensuite, dans ton formulaire maître, sur le contrôle contenant les commandes et sur son événement On Click, tu mets le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub LL_Click()
    Dim str as string
    str = "D:\Cdes CLIENTS\" & Me.ARNO & " - " & Me.SOCIETE
     
    ' Execution de la procédure publique du sous-formulaire
    Form_NomDeTonSousFormulaire.MAJFichiers(str) 
     
    End Sub
    Tiens moi au courant.

    el

  6. #6
    Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 55
    Points
    55
    Par défaut
    Merci beaucoup pour ton aide.

    Dans ton sous-formulaire, crée une procédure VBA en t'inspirant du code suivant :
    Vu que tu indiques une procédure public, je l'ai mise dans un module

    Ensuite, dans ton formulaire maître, sur le contrôle contenant les commandes et sur son événement On Click, tu mets le code suivant :
    J'ai placé ce code dans la procédure événementielle "Sur clic" de la zone de liste dans laquelle je choisi la commande client.
    J'y ai rajouté à la suite le code pour appeler la procédure ListerFichiers et .... ça marche Nickel !!!
    Trop Fort !

    Il faut que j'analyse pour comprendre, mais c'est super. Merci beaucoup !!!

    Une question subsidiaire : Pour faire des tests et avancer, j'ai créé un sous-formulaire avec comme objet-source la table contenant le chemin des fichiers, et à coté, une simple zone de liste qui va pointer comme origine source, sur la même table.

    ça à l'air de marcher pareil ... quelles sont les nuances ? Quel est le plus judicieux ?

    Nom : Capture.PNG
Affichages : 182
Taille : 7,9 Ko


    Encore 1000 Mercis pour cette aide expresse !

    Je place le sujet en résolu

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/04/2007, 16h04
  2. Mise à jour table à partir sous-formulaire
    Par Daniel MOREAU dans le forum Access
    Réponses: 6
    Dernier message: 19/05/2006, 09h26
  3. Mise à jour table liée à à sous formulaire
    Par Michel DELAVAL dans le forum Access
    Réponses: 1
    Dernier message: 15/04/2006, 16h26
  4. Mise à jour d'un sous formulaire
    Par tsyfar dans le forum Access
    Réponses: 4
    Dernier message: 31/01/2006, 11h41
  5. [formulaire] Mise à jour d'un sous formulaire
    Par virginie2 dans le forum IHM
    Réponses: 15
    Dernier message: 22/12/2005, 13h30

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