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 :

[VBA][Form] Ajouter un nombre variant de contrôles


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut [VBA][Form] Ajouter un nombre variant de contrôles
    Bonjour à tous,

    Lorsque mon formulaire s'ouvre, je voudrai qu'il crée et qu'il place un nombre de cases à cocher qui dépend du résultat d'une requête. Mais déjà, je bloque sur la création de plusieurs contrôles au chargement.

    J'ai voulu appliquer la FAQ de VB (http://vb.developpez.com/faq/?page=Form#ctl_dynamique) mais il y a un détail que je ne doit pas saisir ou qui ne doit pas avoir de correspondance entre VB et VBA:
    placez un textbox sur une form et donnez-lui l'index 0
    ==> s'agit-t-il de l'index de tabulation?

    Lorsque que je charge mon formulaire, j'ai le message d'erreur suivant:
    Erreur d'exécution '13': Incompatibilité de type
    Le code bloque sur Load Texte16(i) du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Form_Load()
    Dim i As Long
    For i = 5 To 9
        Load Texte16(i)
        Texte16(i).Top = Texte16(i - 1).Top + Texte16(0).Height + 60
        Texte16(i).Visible = True
    Next
    End Sub
    (NB: je commence le décompte à 5 parce que j'ai d'autres controles déjà créés)


    Avez-vous déjà connu ce problème? L'avez-vous résolu?
    Je sais qu'il y a une 2e solution, d'après la FAQ mais est-elle applicable sous VBA?

  2. #2
    Membre Expert
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Par défaut
    La FAQ Access te propose également de créer dynamiquement des contrôles :
    http://access.developpez.com/faq/?re...=dynamiquement

    En espérant t'aider.

  3. #3
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut
    Ca me paraît prometteur comme plan, ton tuyau.
    Je vais me la tenter comme ça. Je te tiens au courant...

  4. #4
    Membre éclairé

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Par défaut
    Mouais. Y'a pas mal d'erreurs qui sont générées par les codes fournis alors je bricole tout ça.

    J'ai un soucis. Lors de la première création de contrôles, pas de soucis, il me créé les contrôles chk_param1, chk_param2 (etc.) et les labels correspondants lbl_param1, lbl_param2, etc.
    A la fois suivante que je créé mes contrôles, je dois en premier lieux effacer les anciens. Pour cela, j'applique le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        For Each ctl In Forms!f_export_analyses.Controls
            Debug.print ctl.Name
            Select Case Left(ctl.Name, 3)
                Case "chk"
                   DeleteControl "F_export_analyses", ctl.Name
                Case "lbl"
                    DeleteControl "F_export_analyses", ctl.Name
            End Select
        Next ctl
    Donc en théorie, tous les contrôles doivent être passés au peigne fin, puis supprimés si c'est un label (commençant par "lbl") ou un checkbox (commençant par "chk").
    Sauf que j'avais toujours un message du genre "le nom du contrôle 'lbl_param1' est déjà en cours d'utilisation".
    A l'aide du Debug.print, je me suis rendue compte que lors du For each ctl in Forms!..., il y avait plein de contrôles qu'il n'analysait pas et à chaque fois de façon aléatoire (un coup, c'est 1 label, une autre fois c'est tous les labels ou tous les chkbox, etc).
    Vous avez déjà eu ça?

  5. #5
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut


    Parcourir et supprimer des contrôles dans la même boucle For..Next est peut-être mal digéré par Access?

    Une idée : faire deux boucles

    Une première boucle rempli une collection (ou un tableau?) avec les noms ou les index des contrôles à supprimer, puis une boucle sur cette collection (ou tableau ) permet de supprimer les contrôles dans le formulaire.
    Un peu pénible mais ça doit marcher.

Discussions similaires

  1. [VBA-Excel] Ajouter plusieurs forme sur ma forme principale
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2007, 13h44
  2. [VBA-E] Probleme avec Nombre stocké sous forme de texte
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/07/2006, 01h46
  3. Réponses: 4
    Dernier message: 02/06/2004, 11h19
  4. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18
  5. [VBA-W] Ajouter un retour charriot
    Par FatalError dans le forum VBA Word
    Réponses: 3
    Dernier message: 18/12/2002, 15h35

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