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 :

Rafraichissement d'un formulaire ouvert


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Points : 73
    Points
    73
    Par défaut Rafraichissement d'un formulaire ouvert
    Bonjour
    J'avoue ne pas maitriser la syntaxe des actions autour des formulaires et des controles tel docmd.requery opu forms!nom du fomulaire.action
    Et j'y vais au petit bonheur la chance
    1er question
    Pourront on m'indiquer un tutoriel sur ce sujet (car je ne trouve pas la syntaxe idéal pour la recherche de ce tutoriel). Merci d'avance
    2nd question : mon souci
    Mon souci est simple.
    Je sélectionne un produit dans une liste (formulaire continu) et j'intègre celui-ci dans une table provisoire
    Une fois intégré, j'ouvre un formulaire liste (1ère sélection) et ensuite ua fur à mesure des aouts, je souhaite réactualiser ce formulaire.
    J'ai utilisé refresh et requery.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        If CurrentProject.AllForms("Liste-Selection").IsLoaded Then
                Forms![Liste -Selection].Requery
        Else
                DoCmd.OpenForm "Liste-Selection"
        End If
    Souci :
    Soit je ne met pas à jour soit j'ai une erreur qui va de "trouve pas le formulaire" (synthaxe présentée) à erreur de syntaxe
    Avez vous une solution à ma proposer ?
    Merci 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,

    La programmation c'est un sujet rigoureux, il n'y a pas la place pour l'improvisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CurrentProject.AllForms("Liste-Selection").IsLoaded Then
    Forms![Liste -Selection].Requery
    DoCmd.OpenForm "Liste-Selection"
    Le nom d'un formulaire est unique. La ligne 2 fait référence à un formulaire différent de celui de la ligne 1 et 3.


    Quand est-ce qu'on va arrêter d'utiliser le "!" ? Cette syntaxe est datée et pas pratique du tout. Utilise toujours le "."

    Pour le tuto sur les appels formulaires et les événements tu les trouveras sur ma page : https://loufab.developpez.com/
    Il y a également un tableau Pense-bête à imprimer.
    Tu y trouveras également un tuto sur la gestion des évènements.

    A part ce problème de nom ton code semble fonctionnel.

    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
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Points : 73
    Points
    73
    Par défaut
    Merci de ton aide
    En effet, le nom était différent et avant de m'en apercevoir, j'ai bien cherché.
    Quant au "!", il est dans toute les documentations et il n'est pas simple de faire la part des choses.
    Je lis ta littérature.
    Encore merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 118
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 118
    Points : 1 641
    Points
    1 641
    Par défaut
    Hello,

    Malheureusement, très peut de documentation / cours VBA sont à jour, et l'opérateur bang (!) y est largement présent.
    Autres archaïsmes que l'on trouve fréquemment:
    Notation hongroise.
    Absence de confiance au garbage collector (soit: destruction manuelle systématique de toutes les instances).
    Gestionnaires d'erreur a mettre partout, au détriment des mécaniques d'escalade.
    Pop-up systématiques dans les gestionnaires d'erreur.
    Absence de programmation orientée objet.
    Absence de principes SOLID.

  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
    Citation Envoyé par deedolith Voir le message
    Hello,

    Malheureusement, très peut de documentation / cours VBA sont à jour, et l'opérateur bang (!) y est largement présent.
    ...
    C'est donc le moment de participer. N'hésite pas à proposer un sujet, le rédiger et le faire publier.

    Il me semble qu'il y a également un campagne visant à mettre à jour la FAQ, tu pourrais également y participer.
    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

  6. #6
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    Par défaut
    Petit résumé des formes de notation des objets sous Access :
    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
     
    ' How to: Référencement des objets
    ' Forms.nom_form  Désigne le formulaire
    ' Forms!nom_form  Désigne le formulaire. Syntaxe propre à Microsoft ACCESS
    ' Forms("nom_form")   Désigne le formulaire. Le nom peut être remplacé par une variable String
    ' Forms(0)    Désigne le premier formulaire de la pile. 0 peut être remplacé par une variable Integer
    ' Forms.[mon form]    Dans le cas de l'utilisation des espaces dans le nom
    ' Forms![mon form]
    ' Reports...
    ' AllForms(0) Désigne le premier formulaire de la liste. 0 peut être remplacé par une variable Integer
    ' AllForms![nom_form] Désigne le formulaire. Syntaxe propre à Microsoft ACCESS
    ' AllForms ("nom_form")
    ' AllReports...
    ' Forms.nom_form.nom_sousform1.Form.nom_controle
    ' Reports.nom_report.nom_sousreport1.Report.nom_controle
    ' Forms.frm_principal.frm_sfrm1.Form.frm_sfrm2.Form.texte0
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Points : 73
    Points
    73
    Par défaut
    Merci à tous pour vos messages
    La liste de Star me donne une meilleure idée (je comprend la spécificité du ! maintenant)

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Juste pour rebondir sur le !.
    Perso je l'utilise encore pas mal, ça doit être l'âge :-), et j'ai constaté une petite différence.
    Quand on fait forms![NomUnForm]![NomChamp] on peut accéder à un champ dans la source de données même si il n'est pas dans le formulaire lui-même alors qu'avec la notation pointée on ne peut accéder qu'aux champs qui sont explicitement dans le formulaire.
    L'avez-vous constaté aussi ?

    Quand à ne pas faire confiance au garbage colllector, là aussi je désassigne moi-même mes objets en mettant monObjet=Nothing, pas parce que je ne fais pas confiance au compilateur mais pour indiquer explicitement au lecteur qu'à partir de là je n'aurai plus besoin de l'objet en question et si par hasard je le réutilise plus tard par erreur et bien je n'aurai pas la dernière valeur que j'y ai mise mais une belle erreur 91 :-) qui me signalera le problème.

    Et bon il est vrai que VBA accuse pas mal son âge mais presque tous les langages que je connais ont leurs bizarreries.
    Je suis en train de regarder TypeScript et il y a des constantes dont le nom n'est pas en majuscule et certaines qui peuvent changer de valeur (bon pour être honnête c'est probablement parce qu'en dessous c'est un pointeur) mais c'est un peu contre intuitif.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 118
    Points : 73
    Points
    73
    Par défaut
    Je reviens sur le sujet de l'appel à un contrôle dans un sous formulaire.
    Je fais actuellement l'expérience de ce que j'appellerai une ambiguïté sur la bonne formule de l'appel.
    Mon objectif est de charger une photo dans un sous formulaire au chargement du formulaire.
    La formule à l'activation du sous formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Image_maquette.Picture = DLookup("Document", "Photos", "ID_Maquette = " & Forms.Maquettes.ID & " and ID_Photo = 1")
    marche parfaitement

    Toutefois, je souhaite assurer le contrôle du diaporama (il y a plusieurs photos concernant la référence affichée dans le formulaire) à partir du formulaire principal et éviter les événements du sous formulaire.
    Je fais donc à l'activation, le chargement de la zone image du sous formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms.Maquettes.SF_Photos.Image_maquette.Picture = DLookup("Document", "Photos", "ID_Maquette = " & Me.ID & " and ID_Photo = 1")
    tel qu'indique Star dans son post. Formule qui génère une erreur
    La bonne formule alors est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms!Maquettes!SF_Photos!Image_maquette.Picture = DLookup("Document", "Photos", "ID_Maquette = " & Me.ID & " and ID_Photo = 1")
    qui fonctionne correctement
    J'avoue m'y perdre
    C'est vrai que je n'ai qu'un niveau de débutant ++ mais je pense qu'il serait bon de clarifier le bon usage dans le bon contexte.
    Qu'en pensez vous ?
    Cdt

  10. #10
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms.Maquettes.SF_Photos.Image_maquette.Picture
    SF_Photos est le container et non le formulaire (sous formulaire), il faut donc lui spécifier que c'est Image_maquette appartient au Form et non au container. (cf le tuto, ce que les lignes extraites n'indiquent pas.=)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms.Maquettes.SF_Photos.Form.Image_maquette.Picture
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.Maquettes.SF_Photos.Form.Controls("Image_maquette").Picture
    Si tu veux progresser et devenir autonome, consulte les tutos en liens plutôt qu'une copie du contenu posté sans explication.

    Concernant le ! vs . Ces lignes n'expliquent pas pourquoi et dans quels cas on utilise ! ou .

    Voici un tout petit résumé :
    . (dot) est utilisable partout et bénéficie de l'AutoComplétion dans VBA.
    ! (bang) désigne le membre par défaut de la collection/classe... Sauf pour Form et Report qui désigne les colonnes de la source... mais également l'objet par défaut : Controls. durdur là les gars, il faut être habitué.
    Donc dans le cas unique spécifié par Marot_r on utilisera le !, sinon toujours le . (à moins que tu connaissent par coeur l'intégralité des bibliothèques COM (COM=disponibles dans VBA) tu pourras te passer de la précieuse AC. Je développe avec Access depuis sa sortie en 92 et je ne les connais pas toutes. Elles ont des similitudes et de vrais "faux-amis".

    Tu peux trouver de la littérature sur le Net (bang vs. dot). Il y a également eu des discussions sur le sujet dans le forum. (perdu qq part)
    Savoir quel membre par défaut pour quelle collection/classe/objet ? Le génial et peu utilisé "F2". On y trouve tout et on y découvre beaucoup pour quelqu'un de curieux (pour les autres on reste dans sa zone de confort).

    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

  11. #11
    Membre éprouvé Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 842
    Points : 983
    Points
    983
    Par défaut
    Concernant le ! vs . Ces lignes n'expliquent pas pourquoi et dans quels cas on utilise ! ou .
    Fournir le lien du tutoriel qui en discute est mieux que d'essayer de l'expliquer en moins bien :
    https://loufab.developpez.com/tutori...pelformulaire/
    .
    Diviser c'est régner : United we stand, Divided we fall
    .

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

Discussions similaires

  1. Rafraichissement avec un formulaire
    Par bianconeri dans le forum Langage
    Réponses: 13
    Dernier message: 14/02/2006, 10h39
  2. Réponses: 12
    Dernier message: 27/12/2005, 13h16
  3. Rafraichissement données sous-formulaire
    Par christellel198 dans le forum Access
    Réponses: 1
    Dernier message: 31/10/2005, 19h20
  4. Rafraichissement de sous formulaire en mode ajout.
    Par olivll dans le forum Access
    Réponses: 6
    Dernier message: 11/10/2005, 10h19
  5. Formulaire ouvert ?!
    Par neuro dans le forum Access
    Réponses: 26
    Dernier message: 07/09/2005, 13h17

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