Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/05/2011, 14h00   #1
Nouveau Membre du Club
 
Avatar de Cabos
 
Homme Francois
Responsable de service informatique
Inscription : novembre 2010
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Francois
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique

Informations forums :
Inscription : novembre 2010
Messages : 33
Points : 37
Points : 37
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.
Cabos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 03h53   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il y a certaines contradictions dans ce que tu dis :

Citation:
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 11h10   #3
Nouveau Membre du Club
 
Avatar de Cabos
 
Homme Francois
Responsable de service informatique
Inscription : novembre 2010
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Francois
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique

Informations forums :
Inscription : novembre 2010
Messages : 33
Points : 37
Points : 37
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...
Cabos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 12h51   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
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
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 17h06   #5
Nouveau Membre du Club
 
Avatar de Cabos
 
Homme Francois
Responsable de service informatique
Inscription : novembre 2010
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Francois
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique

Informations forums :
Inscription : novembre 2010
Messages : 33
Points : 37
Points : 37
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 !
Cabos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 14h32   #6
Nouveau Membre du Club
 
Avatar de Cabos
 
Homme Francois
Responsable de service informatique
Inscription : novembre 2010
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Francois
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique

Informations forums :
Inscription : novembre 2010
Messages : 33
Points : 37
Points : 37
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é ?
Cabos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 14h57   #7
Membre actif
 
Avatar de Ric500
 
Homme Richard
Ingénieur développement logiciels
Inscription : août 2004
Messages : 166
Détails du profil
Informations personnelles :
Nom : Homme Richard
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : août 2004
Messages : 166
Points : 157
Points : 157
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...
Ric500 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/06/2011, 14h18   #8
Nouveau Membre du Club
 
Avatar de Cabos
 
Homme Francois
Responsable de service informatique
Inscription : novembre 2010
Messages : 33
Détails du profil
Informations personnelles :
Nom : Homme Francois
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique

Informations forums :
Inscription : novembre 2010
Messages : 33
Points : 37
Points : 37
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.
Cabos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h31.


 
 
 
 
Partenaires

Hébergement Web