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 :

Code VBA création d'une checkbox [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut Code VBA création d'une checkbox
    Bonjour à tous,

    je recherche le code VBA pour créer une checkbox.
    J'ai cherché dans l'aide d'Access, mais je n'ai vu aucune commande satisfaisante.

    Merci d'avance pour votre aide,

    Tifriis

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Bonjour ClaudeLELOUP,

    merci pour ton lien qui m'a été d'une aide très précieuse. Cependant (comme souvent ...), j'ai un problème lorsque j'adapte le code que j'ai trouvé.

    Voici mon code :

    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
    DoCmd.OpenForm "Indicateurs_choisis", acDesign
     
    Dim MyControl As Control
    Dim i As Integer
     
    For i = 0 To 10
    Set MyControl = CreateControl("Indicateurs_choisis", acCheckBox, , , , 1200, 1000 + i * 1000, 6300, 500)
    Set MyControl = CreateControl("Indicateurs_choisis", acLabel, , , , 1500, 1000 + i * 1000, 5000, 500)
    Next
     
    Dim Rs As DAO.Recordset
    Dim tableau(100) As String
    i = 1
     
    Set Rs = CurrentDb.OpenRecordset("IndicateursChoisis_Query")
     
    While Not Rs.EOF
        tableau(i) = Rs(0)
        i = i + 1
        Me.Controls("Label" & i).Caption = tableau(i)
        Rs.MoveNext
    Wend
    Set Rs = Nothing
    Access me renvoie l'erreur suivante lors de l'exécution du code :
    Microsoft Office Access can't add, rename or delete the control(s) you requested
    Cependant, j'ai essayé le même code sur un formulaire que je créé, et cela fonctionnait. Mon problème vient donc du fait d'ajouter des Controls sur mon formulaire "Indicateurs_choisis" existant (je l'ouvre pourtant en mode création).


    Merci d'avance pour votre aide,

    Tifriis

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Sérions les problèmes

    le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub tst()
    DoCmd.OpenForm "Indicateurs_choisis", acDesign
     
    Dim MyControl As Control
    Dim i As Integer
     
    For i = 0 To 10
    Set MyControl = CreateControl("Indicateurs_choisis", acCheckBox, , , , 1200, 1000 + i * 1000, 6300, 500)
    Set MyControl = CreateControl("Indicateurs_choisis", acLabel, , , , 1500, 1000 + i * 1000, 5000, 500)
    Next
    End Sub
    t'ajoute 10 cases à cocher et 10 étiquettes dans ton formulaire.

    C'est ça que tu veux ?

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Effectivement, c'est ce que je recherche à créer dans mon formulaire

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    et bien c'est fait !

    à quoi correspond ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Rs As DAO.Recordset
    Dim tableau(100) As String
    i = 1
     
    Set Rs = CurrentDb.OpenRecordset("IndicateursChoisis_Query")
     
    While Not Rs.EOF
    tableau(i) = Rs(0)
    i = i + 1
    Me.Controls("Label" & i).Caption = tableau(i)
    Rs.MoveNext
    Wend
    Set Rs = Nothing
    ça n'a rien à voir ici.

  7. #7
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Bonjour,
    quel est le but ? Obtenir une liste de cases à cocher ?

  8. #8
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Bonjour,

    en fait, le but est d'afficher les résultats d'une requête (IndicateursChoisis_Query) sous forme de Checkbox.

    Le code suivant seul ne marche pas dans mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DoCmd.OpenForm "Indicateurs_choisis", acDesign
     
    Dim MyControl As Control
    Dim i As Integer
     
    For i = 0 To 10
    Set MyControl = CreateControl("Indicateurs_choisis", acCheckBox, , , , 1200, 1000 + i * 1000, 6300, 500)
    Set MyControl = CreateControl("Indicateurs_choisis", acLabel, , , , 1500, 1000 + i * 1000, 5000, 500)
    Next
    Si vous avez d'autres questions, n'hésitez pas. Merci encore.

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Où se trouve ce code chez toi ?
    J'ai testé la fonction de mon post précédent, chez moi, c'est OK.
    Quelle erreur as-tu?

  10. #10
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    J'ai placé le code ici dans mon formulaire "Indicateurs_choisis".

    Celui-ci se lance lorsque l'on clique sur un bouton (Commande31_Click() ) se trouvant dans le formulaire "Indicateurs_choisis"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Commande31_Click()
     
    DoCmd.Close
    DoCmd.OpenForm "Indicateurs_choisis", acDesign
     
    Dim MyControl As Control
    Dim i As Integer
     
    For i = 0 To 10
    Set MyControl = CreateControl("Indicateurs_choisis", acCheckBox, , , , 1200, 1000 + i * 1000, 6300, 500)
    Set MyControl = CreateControl("Indicateurs_choisis", acLabel, , , , 1500, 1000 + i * 1000, 5000, 500)
    Next
     
    End Sub
    J'obtiens le message d'erreur suivant :
    Run time error '29054' :
    Microsoft Office Access can't add, rename or delete the control(s) you requested.
    Merci encore

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Place ce code en dehors du formulaire.
    Par exemple dans un module.
    Et déclenche l'exécution au départ de la fenêtre d'exécution (ctrl+G)

  12. #12
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Bonjour,

    En utilisant ta méthode, cela fonctionne ! Par contre, je ne vois pas pourquoi l'appel de cette fonction ne marche pas quand j'appuie sur mon bouton click ...

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    en fait, le but est d'afficher les résultats d'une requête (IndicateursChoisis_Query) sous forme de Checkbox
    Si tu sélectionnes une requête dans la fenêtre Access et que tu la fais glisser dans un formulaire ouvert en desing, cette requête s'affiche telle quelle dans le formulaire. Ce n'est pas ça ton but, par hasard ?

  14. #14
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Dans ce cas, n'est-il pas simple de créer un formulaire en mode continu, ayant pour source ta requête et possédant une zone de texte pour l'affichage des libellés et une case à cocher ?

  15. #15
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Par contre, je ne vois pas pourquoi l'appel de cette fonction ne marche pas quand j'appuie sur mon bouton click ...
    Sans doute parce que ton formulaire, qui est ouvert bien peinard, n'a pas envie de se faire torturer à vif. Essaie de t'ajouter une prothèse toi-même ...

  16. #16
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    En fait, ma requête renvoie un nombre de données non constant (pouvant aller de 0 à plus de 150).

    Au final, c'est comme si je voulais "juste" faire apparraître les résultats de ma requête dans une listbox, sauf qu'à la place d'avoir une listbox, je veux des checkbox (une checkbox par valeur renvoyées par ma requête).

  17. #17
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    Oui, c'est justement le rôle du formulaire continu.
    En revanche, à quoi servent les cases à cocher ?

  18. #18
    Membre confirmé
    Inscrit en
    Octobre 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 76
    Par défaut
    Le but "final" de ce que je veux faire, c'est sélectionner via des checkbox certains résultats fournis par ma requête.

    Je ne voyais pas trop comment faire autrement.

    Merci encore.

  19. #19
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    bonjour, une solution est de simuler la liste de cases à cocher via un sous-formulaire en mode continu ayant pour source de données ta requête, sur ce formulaire une case à cocher sans étiquette et une zone de texte sans étiquette également. La zone de texte servira de pseudo étiquette pour la checkbox, elle a pour contenu la colonne de ton choix dans la requête.
    De cette manière, tu obtiens une liste de cases à cocher dont le nombre de lignes dépend du jeu de résultats de la requête.

  20. #20
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 80
    Par défaut
    Bonjour,

    Je viens de voir votre discussion. Je suis à peu prés dans le même cas.

    J'essaye de créer des cases à cocher pour chaque enregistrement d'une table avec du vba. Par exemple, j'ai la table T1. Dans le champ champ1, j'ai comme enregistrement : 1, 2, 3, 4, 5 (les enregistrements sont du texte) .
    J'aimerai ajouter, à l'ouverture d'un formulaire (form1), des cases à cocher pour chaque enregistrement de la table.

    Mais, étant débutant sur vba, je bloque.
    Auriez-vous une idée svp ?

    Merci d'avance

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

Discussions similaires

  1. Code VBA qui supprime une requête
    Par Fredo67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/05/2008, 17h47
  2. {EXCEL ou VBA}Création d'une macro (Débutant)
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/05/2007, 15h32
  3. [VBA]Création d'une procédure de recherche
    Par Thegad dans le forum VBA Access
    Réponses: 3
    Dernier message: 03/04/2007, 18h16
  4. [VBA]Création d'une table VBA est-ce possible?
    Par bacchus30 dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/03/2007, 14h44
  5. [FK] Récupérer le code de création d'une FK
    Par maitrebn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 04/08/2004, 08h28

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