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 :

Créer un sous formulaire par code VBA


Sujet :

IHM

  1. #1
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut Créer un sous formulaire par code VBA
    Bonjour,

    Je cherche à créer un sous-formulaire directement à partir de mon code.

    Ce sous-formulaire est généré à partir d'une table reconstruite à chaque exécution du code. A partir de là, impossible de se contenter de placer le sous-formulaire en invisible sur le formulaire : au moment de détruire la table pour la reconstruire, ACCESS bute (et c'est normal !) sur le fait que le sous formulaire (visible ou pas) utilise cette table.

    Je ne vois que deux solutions à mon problème :

    1 - Créer à chaque exécution mon sous formulaire. Mais autant je vois bien la méthode du "CreateForm", autant je n'arrive pas à trouver comment "Create an Under Form", si je puis me permettre !!

    2 - Ne pas détruire ma table à chaque fois; juste me contenter d'effacer les enregistrements existants, ce qui me permettra d'utiliser l'astuce du "sous-formulaire invisible", qui ne le devient (visible) qu'au moment propice !

    Je vais partir sur la solution n°2, qui me semble également moins technique en code (encore que...), mais j'avoue que je serais très intéressé par une solution ou un début de piste sur l'idée n°1.

    Merci de votre aide.
    Selon les points de vue, on peut être un chic type ou juste un trou du c...

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il y a certaines contradictions dans ce que tu dis :

    2 - Ne pas détruire ma table à chaque fois; juste me contenter d'effacer les enregistrements existants, ce qui me permettra d'utiliser l'astuce du "sous-formulaire invisible", qui ne le devient (visible) qu'au moment propice !
    Cela signifie donc que ta table a toujours les mêmes champs, non ?

    Si c'est le cas à quoi peut servir la création dynamique

    Merci d'éclaircir ce point

    Philippe

  3. #3
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    Oui, la table a effectivement toujours les mêmes champs.

    Le problème se pose dans l'ordre d'exécution des traitements :

    1 / Formulaire n°1 présente une liste déroulante qui, sur choix, affiche un formulaire n°2 et exécute un code.

    2 / Ce code génère une table "éphémère", qui ne sert que le temps du traitement. En début de code, on teste donc l'existence de cette table pour :

    Solution 1 :
    - la détruire si elle existe
    - la recréer à neuf
    - l'instruire
    - générer un sous formulaire qui affiche le contenu de cette table

    --> c'est dans cette solution que j'ai un problème. J'ai d'abord voulu créer le sous formulaire et le rendre simplement invisible le temps du traitement, pour l'afficher ensuite, mais forcément, ce sous formulaire affichant la table (qu'elle soit visible ou non à l'écran, peu importe), cela coince quand le code cherche à la détruire ! Je me suis donc dit qu'une solution serait de créer le sous formulaire dans la foulée. Solution compliquée, je le reconnais volontiers (surtout quand on regarde la solution n°2 !), mais du coup, une question s'est posée : on peut créer un formulaire par CreateForm.... mais comment crée-t-on un sous-formulaire ? Un CreateForm dans un container de sous-formulaire ? Quelle serait la syntaxe d'une telle instruction ?

    Solution 2 :
    - Si la table existe, détruire tous les enregistrements, sinon la créer
    - L'instruire
    - Rendre le sous formulaire (déjà présent) visible en le rafraichissant avant.

    Clairement, c'est ce que j'ai fait, et c'est beaucoup plus simple. Ça fonctionne même nickel !

    Mais la question de la création du sous-formulaire est restée, et je me demandais si quelqu'un avait une piste...
    Selon les points de vue, on peut être un chic type ou juste un trou du c...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par Cabos Voir le message
    Mais la question de la création du sous-formulaire est restée, et je me demandais si quelqu'un avait une piste...
    Quel est l'intérêt ? J'ai du mal à comprendre ?

    Philippe

  5. #5
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Savoir créer de toutes pièces un sous-formulaire directement dans un formulaire.

    Access, je le découvre pour beaucoup en essayant ! Comme la plupart des utilisateurs, je pense.

    Des fois (souvent même), certains problèmes ne sont tordus que parce qu'ils ont été mal pensés, mais ils ont l'avantage de soulever des points qui pourraient m'être utiles plus tard.

    Bref, c'est de la curiosité utile !

    Maintenant, s'il n'existe pas de réponse sur ce point, c'est ok aussi !
    Selon les points de vue, on peut être un chic type ou juste un trou du c...

  6. #6
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bon, vraiment, personne n'a d'idée là dessus ?

    Parce que ce n'est pas possible, ou seulement parce que personne n'en a trouvé l'utilité ?
    Selon les points de vue, on peut être un chic type ou juste un trou du c...

  7. #7
    Membre éprouvé Avatar de Ric500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 956
    Points : 1 139
    Points
    1 139
    Par défaut
    Salut!

    As-tu essayé en faisant dans l'ordre:

    1°/ Monform!MonSousForm.form.recordsource=""
    2°/ Création de MaTable
    3°/ Monform!MonSousForm.form.recordsource="MaTable"

    Bonne continuation...
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  8. #8
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour Ric500 et merci de cette proposition.

    Simple et efficace !

    Si j'avais persisté à vouloir détruire ma table (ou si je m'étais retrouvé dans un cas de figure m'obligeant à le faire), il suffisait donc :

    1 - que je supprime la table existante (en n'oubliant pas bien sûr de placer le Recordsource du sous formulaire à vide, le "déconnectant" ainsi de la table)
    2 - que je la recrée et que je l'instruise
    3 - que j'inscrive Forms![Formulaire].[Sous-formulaire].Form.Recordsource = "Table"
    4 - que je rende mon sous formulaire visible

    Et le tour est joué !

    Clairement, c'est beaucoup plus tordu que d'effacer les lignes existantes et de compléter la table, mais c'est exactement la solution au cas d'école que je cherchais !

    Merci encore de ton intervention.

    Sujet résolu.
    Selon les points de vue, on peut être un chic type ou juste un trou du c...

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/03/2015, 18h49
  2. Réponses: 2
    Dernier message: 24/04/2013, 14h48
  3. [OL-2010] Création par code VBA des formulaires flottants
    Par metramo dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 10/01/2013, 09h50
  4. Réponses: 2
    Dernier message: 01/01/2007, 22h01
  5. [VBA-E]ajouter un textbox sur un formulaire par code?
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 22/03/2006, 09h33

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