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 :

MAJ auto sous-formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Points : 56
    Points
    56
    Par défaut MAJ auto sous-formulaire
    Bonjour,

    J'ai un souci avec un sous-formulaire :
    Ce sous-formulaire doit récupérer les valeurs d'une table. Le problème, c'est que cette table change constamment de nombre et de noms de champs. Après avoir avoir créé mon sous-formulaire, celui-ci conserve l'image des champs qui étaient présents lors de sa création.

    1ere solution (ne sait pas faire) : Je voudrais qu'a l'ouverture du formulaire, le sous-formulaire se mette automatiquement à jour en fonction des champs présents dans la table.

    2e solution (il me manque la commande pour créer un sous formulaire) : Je voudrais qu'à l'ouverture de mon formulaire (ou lors du clic sur le bouton qui doit l'ouvrir), le sous-formulaire soit détruit ou remplacé par un formulaire créé à partir de la table en question.

    3e solution (ne me convient pas vraiment...) : Remplacer le sous-formulaire par l'affichage direct de la table. C'est la seule suolution qui marche pour moi en ce moment, mais elle présente des inconvénients par rapport à ce que je souhaiterais faire...


    Si quelqu'un a une idée... je suis preneur ! J'avoue que je m'énerve là-dessus depuis plusieurs heures !

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Regarde ce lien de la FAQ et fais une recherche sur le forum avec les mots clés 'formulaire création dynamique'

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Points : 56
    Points
    56
    Par défaut
    Merci, ça marche pas mal (même si je vais trimer pour mettre ça en place avant la fin de la semaine )

    Il reste un problème : j'ai mis ça dans le form_open du formulaire, et il y a des fois où je dois réouvrir le formulaire pour voir les changements apportés...

    Autres questions, y a-t-il une commande pour les supprimer à la fermeture du formulaire ? Est-il possible, lors de la création de ces contrôles, de leur donner un nom ? J'en suis déjà à des noms "Text50", et ça ne fait qu'augmenter !

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Pour le rafraichissement du formulaire, essaie sur l'évènement 'Sur activé' :
    A chaque fois que le formulaire sera activé : il sera redessiné.
    Autres questions, y a-t-il une commande pour les supprimer à la fermeture du formulaire ? Est-il possible, lors de la création de ces contrôles, de leur donner un nom ? J'en suis déjà à des noms "Text50", et ça ne fait qu'augmenter !
    La commande serait de faire une boucle sur tous les objets de type text et de les supprimer, puis les refaire à l'ouverture du formulaire.

    Tu peux les nommer à la création. Admettons que ta boucle de création utilise un compteur, tu renommes les champs text avec Texte et le numéro du compteur.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Points : 56
    Points
    56
    Par défaut
    lol j'allais justement dire que j'avais trouvé la solution !
    En fait je ne peux pas tout supprimer, je dois garder certains labels et textes. J'ai donc procédé ainsi :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Dim texte As TextBox
    Dim etiquette As label
    Dim i As Integer
    Set db = CurrentDb
    Dim Table As DAO.TableDef
    Dim Champ As DAO.Field
    Set Table = db.TableDefs("table_jour")
    i = 0
    'Liste les champs
    Me.table_jour_Sous_formulaire2.SourceObject = "" 'on ferme le sous-formulaire
    DoCmd.OpenForm "table_jour_Sous_formulaire2", acDesign, , , , acHidden 'on le rouvre en mode création et caché
    For Each Champ In Table.Fields
        If i > 5 Then
            Set texte = CreateControl("table_jour_Sous_formulaire2", acTextBox, acDetail, "", Champ.Name, ((i * 800) + 500), 50, 800, 300) 'on trace la zone de texte
            texte.Name = "Txt_" & Champ.Name
            Set etiquette = CreateControl("table_jour_Sous_formulaire2", acLabel, acHeader, "", Champ.Name, ((i * 800) + 500), 50, 800, 300)  'on trace le label
            etiquette.Name = "Lbl_" & Champ.Name
            Set texte = Nothing 'on libère la mémoire
            Set etiquette = Nothing
        End If
        i = i + 1
    Next Champ
    DoCmd.Close acForm, "table_jour_Sous_formulaire2" 'on ferme le formulaire
    Me.table_jour_Sous_formulaire2.SourceObject = "table_jour_Sous_formulaire2" 'on rouvre le sous-formulaire dans le formulaire principal
    Set Table = Nothing
    Set Champ = Nothing
    J'ai essayé de bidouiller quelque chose pour que les controles soient plus espacés sur le formulaire mais ça 'a pas l'air de marcher terriblement...

    Pour le Me.repaint par contre, je n'y avais pas pensé !

    Bon, il me reste à faire une boucle pour supprimer tous les contrôles créés à l'ouverture (ou fermeture ?) du formulaire, et après ça devrait marcher !


    Merci beaucoup à toi Kikof, tu m'as été d'une aide précieuse !!!

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/08/2011, 14h22
  2. [AC-2003] Ajustement auto sous-formulaire
    Par paidge dans le forum IHM
    Réponses: 1
    Dernier message: 05/08/2010, 09h30
  3. Maj liste sous formulaire
    Par david87 dans le forum IHM
    Réponses: 2
    Dernier message: 29/04/2008, 13h06
  4. Maj sous-formulaire
    Par jmde dans le forum IHM
    Réponses: 5
    Dernier message: 10/12/2005, 22h45
  5. MAJ de sous-formulaire ds appl multilangue
    Par Papillon00 dans le forum IHM
    Réponses: 5
    Dernier message: 03/01/2005, 21h02

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