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 :

Insérer des sous états les uns à la suite des autres


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 172
    Points : 100
    Points
    100
    Par défaut Insérer des sous états les uns à la suite des autres
    Bonjour,

    Je vous explique mon problème. Nous aimerions créer un état personnalisé, pour cela nous ferions choisir par le biais d'un formulaire à l'utilisateur quels sont les sous-états qu'il veut faire apparaitre dans son état.

    Je vois comment il est possible de les afficher en les ayant intégrés mais il va y avoir des" trous" si on ne choisis pas tous les sous-états.

    Est-il possible de choisir les sous-états à afficher et ensuite de les intégrer les uns à la suite des autres dans un état avec du code VBA??

    Si oui pourriez-vous me décrire brièvement comment faire? Je pense que c'est possible mais je voulais m'en assurer avant de me lancer là dedans.

    Merci beaucoup pour 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 037
    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 037
    Points : 24 610
    Points
    24 610
    Par défaut
    Bonjour,
    Le cas de l'état est très spécifique, son fonctionnement également.
    Ce qu'il faut savoir en résumé est que toutes les données à imprimer doivent être défini à l'ouverture de l'état.

    Les sous-formulaires doivent avoir trois valeurs definies :
    • la source autrement dit le nom du sous-état,
    • le champ père, c'est le champ qui fera la liaison entre les données de l'état et celles du sous état.
    • le champ fils, c'est le champ qui fait la liaison dans le sous état.


    Crée un formulaire de sélection des sous états à placer. Dans mon code exemple il se nomme frmChoixSousEtat. Il est composé de case à cocher. Tu peux améliorer ça en mettant une zone liste avec le nom du sous état, et des champ, pere et fils.

    L'état.
    Dans l'état prépare autant de controles Sous-état que l'utilisateur pourra en mettre.
    Réduit les jusqu'a ce qu'il ne soit plus qu'une ligne.
    Régle les propriétés Auto extensible et Auto réductible à oui.

    Prépare ensuite tes sous etat en veillant à ce qu'il comporte bien le champ fils nécessaire.

    Le Code :
    Le code est assez simple. Il est en 2 parties. La partie choix réglage des sous-états sélectionnés toujours dans le Open et la partie montrer/cacher dans la partie Sur formatage de la zone les contenant.

    Réglage :
    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
    Private Sub Report_Open(Cancel As Integer)
    If Forms("frmChoixSousEtat").Controls("cccontrat") Then  ' l'utilisateur a choisie d'afficher les contrats du clients
        Me.Fille5.SourceObject = "SEContrat" 
        Me.Fille5.LinkMasterFields = "N_CLIENT"
        Me.Fille5.LinkChildFields = "N_CLIENT"
    End If
     
    If Forms("frmChoixSousEtat").Controls("ccappareil") Then
    ' a choisie les appareils
       Me.Fille7.SourceObject = "SEAppareil"
       Me.Fille7.LinkMasterFields = "N_CLIENT"
       Me.Fille7.LinkChildFields = "N_CLIENT"
    End If
    If Forms("frmChoixSousEtat").Controls("ccFacture") Then
    ' a choisi la liste des factures
       Me.Fille9.SourceObject = "SEFacture"
       Me.Fille9.LinkMasterFields = "N_CLIENT"
       Me.Fille9.LinkChildFields = "N_CLIENT"
    End If
    End Sub
    Cette méthode permet de livrer un mde (accde) à la différence de la méthode d'ajout du controle (createcontrol) qui elle ne le supporte pas.

    Cordialement,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
    If Len(Me.Fille5.SourceObject) = 0 Then Me.Fille5.Visible = False
    If Len(Me.Fille7.SourceObject) = 0 Then Me.Fille7.Visible = False
    If Len(Me.Fille9.SourceObject) = 0 Then Me.Fille9.Visible = False
    End Sub

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 172
    Points : 100
    Points
    100
    Par défaut
    Merci pour votre réponse, j'avais pensé à quelque chose de similaire mais surement moins "propre".

    Je pensais insérer les sous-état avec une hauteur d'une seule ligne. Lorsque le sous-état n'est pas choisi, je pensais mettre les propriété autoréductible et autoextensible à non et cacher le sous-état. Mais votre méthode sera surement plus rapide en temps de traitement je pense.

  4. #4
    Rédacteur/Modérateur

    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 037
    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 037
    Points : 24 610
    Points
    24 610
    Par défaut
    Oui puisque tu ne chargeras que les données necessaire. Il y a surement de l'optimisation à faire dans le code.

    C'est du Quick and Dirty

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

Discussions similaires

  1. Blocs les uns à la suite des autres
    Par Darkaurora dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 16/12/2014, 15h11
  2. Réponses: 0
    Dernier message: 23/07/2014, 16h51
  3. Réponses: 0
    Dernier message: 25/02/2011, 07h35
  4. Contrôler l'affichage des sous-états
    Par Noline dans le forum Access
    Réponses: 1
    Dernier message: 31/07/2006, 19h14

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