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
Version imprimable
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
Bonjour,
même ici ?
http://access.developpez.com/faq/?pa...reeDynCtrlCode
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 :
Access me renvoie l'erreur suivante lors de l'exécution du code :Code:
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
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).Citation:
Microsoft Office Access can't add, rename or delete the control(s) you requested
Merci d'avance pour votre aide,
Tifriis
Sérions les problèmes
le code suivant
t'ajoute 10 cases à cocher et 10 étiquettes dans ton formulaire.Code:
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
C'est ça que tu veux ?
Effectivement, c'est ce que je recherche à créer dans mon formulaire
et bien c'est fait !
à quoi correspond ce code :
ça n'a rien à voir ici.Code:
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
Bonjour,
quel est le but ? Obtenir une liste de cases à cocher ?
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 :
Si vous avez d'autres questions, n'hésitez pas. Merci encore.Code:
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
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?
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"
J'obtiens le message d'erreur suivant :Code:
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
Merci encoreCitation:
Run time error '29054' :
Microsoft Office Access can't add, rename or delete the control(s) you requested.
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)
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 ...
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 ?Citation:
en fait, le but est d'afficher les résultats d'une requête (IndicateursChoisis_Query) sous forme de Checkbox
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 ?
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 ...Citation:
Par contre, je ne vois pas pourquoi l'appel de cette fonction ne marche pas quand j'appuie sur mon bouton click ...
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).
Oui, c'est justement le rôle du formulaire continu.
En revanche, à quoi servent les cases à cocher ?
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.
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.
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