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

VBA Access Discussion :

Disposition tabulaire des contrôles en passant par du code VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Par défaut Disposition tabulaire des contrôles en passant par du code VBA
    Bonjour tout le monde,

    Encore bravo pour ce site/Forume/FAQ très intéressant sur le VBA et Access.

    Mais voici ma question :
    J'ai trouvé le moyen de créer des contrôles dans un formulaire directement en passant par du code VBA (pour info, il faut utiliser CreateControl).
    Malheureusement, je n'ai pas trouvé de moyen mettre mes contrôles (plusieurs labels et textbox reliés deux à deux) en format tabulaire. Je suis obligé de le faire manuellement.

    Quelqu'un aurait une idée à me proposer ?

    Un grand merci par avance...

  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 137
    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 137
    Par défaut
    Bonjour,

    Qui dit tabulaire dit coordonnées lignes et colonnes préfixées.

    Left pour les colonnes

    et Top+Height+ecart pour les lignes.

    Note que ces valeurs (comme width) doivent être fournie à CreateControl, donc gère-les avec des variables.

    Personnellement j'évite cette méthode, cela oblige à livrer une appli non compilée, donc ouverte aux quatre vents.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Par défaut
    Bonjour,

    Merci de m'avoir apporter une réponse... Malheureusement (et ce n'est pas faute de le vouloir !), je n'ai pas compris comment mettre ça en place ?

    Voici un exemple de programmation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim CtrlTxt As Control, CtrlLbl As Control
     
        'Création des textbox
        Set CtrlTxt = CreateControl("Mon_Formulaire", acTextBox, acDetail, , Champ1, 70, 950, 1670, 315)
        CtrlTxt.Name = "Champ1"
     
        'Création des labels
        Set CtrlLbl = CreateControl("Mon_Formulaire", acLabel, acHeader, "Champ1", , 70, 475, 1670, 315)
        CtrlLbl.Name = "Tri_Champ1"
        CtrlLbl.Caption = "Etiquette Champ1"
    Ce code fonctionne très bien. Malheureusement, pas moyen de mettre ces deux contrôles sous forme tabulaire.
    Saurais-tu m'indiquer comment tu procéderais avec ce code pour les mettre en tabulaire ?

    Un grand merci


    PS : Je comprends tout à fait qu'avec ce type de code, ce n'est pas compilé (mais est-ce si génant ?). Mais il s'avère que ce code, je l'intègre dans un fichier Excel qui me paramètre automatiquement ceci (et bien d'autres choses) selon des champs préremplis. En fait, j'ai fait un programme qui fait des programmes (chaque fois que je fais une BDD access, le formulaire de consultation a toujours la même forme, d'où le fait d'automatiser la création des contrôles...)

  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 137
    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 137
    Par défaut
    Voici un exemple :

    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
    Dim CtrlTxt As Control, CtrlLbl As Control
     DoCmd.OpenForm "formulaire1", acDesign
        'Création des textbox
        Dim lLeft As Long
        Dim lTop As Long
        Dim lWidth As Long
        Dim lHeight As Long
        Dim lEcart As Long
     
        lLeft = 70
        lTop = 950
        lWidth = 1670
        lHeight = 315
        lEcart = 70
     
        Set CtrlTxt = CreateControl("formulaire1", acTextBox, acDetail, , "Nom", lLeft + lWidth + lEcart, lTop, lWidth, lHeight)
        CtrlTxt.Name = "Champ1"
     
        'Création des labels
        Set CtrlLbl = CreateControl("formulaire1", acLabel, acHeader, "Champ1", , lLeft, lTop, lWidth, lHeight)
        CtrlLbl.Name = "Tri_Champ1"
        CtrlLbl.Caption = "Etiquette Champ1"

    Je pense que tu auras mieux cerné la manière de faire évoluer ton code.

    Ce n'est pas dérangeant, il faut simplement savoir les inconvénients de ce type de commande.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2011
    Messages : 65
    Par défaut
    Merci pour ces infos.
    Malheureusement, les contrôles n'apparaissent pas en position tabulaire. Ils sont placés l'un à côté de l'autre, comme si je les avais créer manuellement dans l'interface graphique (ce qui est déjà pas mal, soit dit en passant...).

    Mais c'est quand même la position tabulaire qui m'intéresserait ? C'est-à-dire dans le cas où le label est positionné dans la partie Entête et la textbox qui y est liée dans la partie Détail, le tout lié par une "sorte" de tableau (l'augmentation de la largeur de l'un modifiant obligatoirement la largeur de l'autre).

    Une autre idée ?

    Merci

  6. #6
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Il suffit pourtant de définir vos propres coordonnées dans l'exemple de loufab.

    Logiquement, si vous avez bien mixé acHeader et acDetail, les deux contrôles ne peuvent pas être dans la même section.

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

Discussions similaires

  1. [débutant] ajouter des contrôles à une feuille par code
    Par Claude_Azoulai dans le forum VB.NET
    Réponses: 3
    Dernier message: 03/04/2010, 18h51
  2. LSP & WinSock2 -> Contrôle bande passante par PID
    Par jnico21200 dans le forum Visual C++
    Réponses: 0
    Dernier message: 21/07/2009, 11h56
  3. Réponses: 1
    Dernier message: 31/03/2009, 11h23
  4. Réponses: 2
    Dernier message: 17/12/2008, 17h33
  5. [MySQL] Mise en bdd d'un fichier csv en passant par un code php
    Par Cereales dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 01/03/2008, 15h45

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