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 état dynamique en VBA ?


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Créer un état dynamique en VBA ?
    Bonjour

    Je sèche, et j'ai donc pensé à vous (félicitation à votre communauté au passage, c'est une vraie caverne aux multiples trésors).

    Voici mon problème :

    Je créé une base pour gérer les licenciés d'un club sportif. J'ai donc entre autres une table "LICENCIES" qui regroupe toutes les données renseignées par nos joueurs sur les fiches d'inscription (une trentaine de champs).
    Ces données sont utilisées par plusieurs personnes du club, mais en partie seulement : Un entraineur n'aura besoin que des numéros de téléphones, mail et numéros de licences, le responsable du partenariat utilisera les professions des licenciés et de leurs parents, la secrétaire voudra uniquement les adresses postales...

    J'ai donc créé un formulaire avec des cases à cocher qui me permet (grâce à une requête création) de créer une table "LISTE PAR CRITERES" contenant uniquement les champs cochés. Cette table s'efface et se recréé à chaque nouvelle utilisation. Bien sûr, le nombre de champs varie en fonction de la demande.
    Et là, je coince... J'aimerais pouvoir imprimer la liste obtenue en créant un état, mais je ne sais pas comment, dans mon code VBA, créer un état basé sur la table créée momentanément...

    Si vous avez une clé, ou une idée pour avancer, je suis preneur

    Merci d'avance

    Fab

  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 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Bonjour (et bienvenue),

    Dans un premier temps construit un état qui contient la totalité des informations de la table quelque soit le critère.

    Renomme tes controles (pas les champs ) en les préfixants suivant le critère.

    Exemple : Adresse se nomera SAdresse (pour Secrétaire Adresse) NumTel se nomera ENumTel (pour Entraineur NumTel)...

    La détection du type de report ou comment faire comprendre au report que je vais faire une impression à destination de la secrétaire ou de l'entraineur.

    En utilisant la clause OpenArgs de la commande Docmd.openreport

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    docmd.OpenReport "monreport",,,,,"E"  ' pour l'entraineur
    docmd.OpenReport "monreport",,,,,"S"  ' pour la secrétaire
    ...
    Une fois que tu as ces ensembles et que ta procédure de lancement est faite crée un événement Sur Ouverture (du report) et cache les controles qui ne sont pas concerné par l'impression.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Report_Open(Cancel As Integer)
     
    Dim ctrl As Control
     
    For Each ctrl In Me.Controls  ' balayage des controles
        If TypeOf ctrl Is TextBox Then  ' on ne traite que les boite de texte
           If Left(ctrl.Name, 1) = Me.OpenArgs Then   ' le prefixe correspond à celui passé en argument
              ctrl.Visible = False   ' on le cache
           End If
        End If
    Next
     
    End Sub
    A adapter suivant les besoins en types de champ et en champ qui sont toujours affiché. Exemple une date qui commence par un préfixe devra également être renomée. Ne pas hésiter à redéfinir son propre système de préfixage.

    Ndr : Il s'agit d'une solution possible parmi d'autres. Chacun pourra appréhender le problème sous des angles différents.

    Cordialement,

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse Fab, et de ta bienvenue.

    La solution que tu me proposes ne sera a priori pas adaptée car je n'ai pas été très clair dans l'exposé de mon problème. En fait, les exigences des entraineurs, secrétaires... sont des exemples. Mon but est de faire un état affichant les champs choisis par l'utilisateur. Voici ci-dessous le formulaire que j'ai pour le créer.



    Mais le temps que tu m'as consacré ne sera peut-être pas perdu car ton code m'ouvre des perspectives, avec notamment la boucle de balayage des contrôles.

    Je me penche dessus et vous tiens au courant si j'arrive à quelque chose.

    Et je suis ouvert à d'autres suggestions bien sûr !

    Merci encore Fab

Discussions similaires

  1. Créer des état dynamiques
    Par typouce dans le forum IHM
    Réponses: 1
    Dernier message: 11/02/2015, 12h25
  2. Créer un état dynamiquement
    Par PimSaVie dans le forum WinDev
    Réponses: 6
    Dernier message: 14/04/2008, 11h04
  3. Création d'un état dynamique par vba
    Par tit65 dans le forum IHM
    Réponses: 3
    Dernier message: 17/09/2007, 12h03
  4. [Etat] Comment créer un état dynamiquement ?
    Par nicolas.pied dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/08/2007, 09h48
  5. [VBA Excel] Créer plusieurs contrôles dynamiquement
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 08/12/2005, 18h27

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