Programation CheckBox Excel VBA
Résolu/Fermé
simonlagaffe
Messages postés
13
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
20 juillet 2009
-
25 juin 2008 à 22:09
simonlagaffe Messages postés 13 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 20 juillet 2009 - 27 juin 2008 à 20:25
simonlagaffe Messages postés 13 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 20 juillet 2009 - 27 juin 2008 à 20:25
Bonjour,
J'ai créer un document excel permettant de gérer des défauts. Pour faciliter le remplissage du tableau, j'ai créer un formulaire d'entrée dans lequel plusieurs informations sont rentrés et retransmise dans le tableau aprés validation.
Le problème est le suivant:
J'ai créer des cases à coché (ChekBox) avec les principaux défaut (chacun a son intitulé), et juste a côté un menu déroulant ou l'on doit choisir l'endroit du défaut.
je voudrais pouvoir reporter chaque défauts cochée ainsi que la localisation dans une seule cellue (en lsiting en fait)
Quelqu'un serait me renseigner sur la manière de faire? Car pour le moment il ne me met que "VRAI" ou "FAUX" dans la celluel, et rien d'autre.
Je précise que je suis novice, et utilise Excel pour faire ceci (recherche sur le net des truc et astuce pour y arriver)
Je vous remercie d'avance
J'ai créer un document excel permettant de gérer des défauts. Pour faciliter le remplissage du tableau, j'ai créer un formulaire d'entrée dans lequel plusieurs informations sont rentrés et retransmise dans le tableau aprés validation.
Le problème est le suivant:
J'ai créer des cases à coché (ChekBox) avec les principaux défaut (chacun a son intitulé), et juste a côté un menu déroulant ou l'on doit choisir l'endroit du défaut.
je voudrais pouvoir reporter chaque défauts cochée ainsi que la localisation dans une seule cellue (en lsiting en fait)
Quelqu'un serait me renseigner sur la manière de faire? Car pour le moment il ne me met que "VRAI" ou "FAUX" dans la celluel, et rien d'autre.
Je précise que je suis novice, et utilise Excel pour faire ceci (recherche sur le net des truc et astuce pour y arriver)
Je vous remercie d'avance
A voir également:
- Programation CheckBox Excel VBA
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Excel compter cellule couleur sans vba - Guide
5 réponses
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
25 juin 2008 à 23:36
25 juin 2008 à 23:36
bonjour
L'on ne sait pas comment sont gérées tes listes : listbox ?
Un départ de code
Tu nous précise un peu pour aller plus loin.
L'on ne sait pas comment sont gérées tes listes : listbox ?
Un départ de code
Dim Ctrl As Control For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.CheckBox Then If Ctrl.Value = True Then cellule = Ctrl.Caption & ListBox '"endroit" End If End If Next
Tu nous précise un peu pour aller plus loin.
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
26 juin 2008 à 23:53
26 juin 2008 à 23:53
bonjour
Donc tu as autant de combobox que de chekbox ?
Comment tu associes la combobox_truc à la chekbox_machin ?
Donc tu as autant de combobox que de chekbox ?
Comment tu associes la combobox_truc à la chekbox_machin ?
simonlagaffe
Messages postés
13
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
20 juillet 2009
27 juin 2008 à 04:44
27 juin 2008 à 04:44
Oui, j'ai autant de combobox que de chekbox (enfin presque, puis que 3 des défauts ne nécessite pas de localisation)
Donc pour être exact, j'ai:
- 5 chekbox associés à 5 combobox
- 2 chekbox seuls
Mais mon problème c'est que je ne sait pas comment associé l'intitulé des deux pour pouvoir reporter la totalité dans une cellule...
Exemple:
Un chekbox coché "Surépaisseur" avec une localisation choisi dans la combobox "Flanche Top" devrait me donner dans la cellule I2 "-Surépaisseur Flanche Top"
Et ainsi de suite , car possibilité de sélectionner plusieurs défauts, ce qui donnerai:
Cellule I2:
"-Surépaisseur Flanche Top
- Sous épaisseur Flanche Bottom
- Alésage Surdimensionnement"
Donc pour être exact, j'ai:
- 5 chekbox associés à 5 combobox
- 2 chekbox seuls
Mais mon problème c'est que je ne sait pas comment associé l'intitulé des deux pour pouvoir reporter la totalité dans une cellule...
Exemple:
Un chekbox coché "Surépaisseur" avec une localisation choisi dans la combobox "Flanche Top" devrait me donner dans la cellule I2 "-Surépaisseur Flanche Top"
Et ainsi de suite , car possibilité de sélectionner plusieurs défauts, ce qui donnerai:
Cellule I2:
"-Surépaisseur Flanche Top
- Sous épaisseur Flanche Bottom
- Alésage Surdimensionnement"
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
27 juin 2008 à 10:24
27 juin 2008 à 10:24
bonjour
mon problème c'est que je ne sait pas comment associé l'intitulé des deux
Il existe plusieurs solutions, mais je te propose celle-ci qui est très facile à mettre en oeuvre :
- lorsque tu crées tes checkbox, tu mets dans la propriété "tag" le nom du combobox associé
- ensuite à partir du checkbox tu peux accéder au combobox associé
Pour te permettre de voir comment faire, je te propose cette macro associée au bouton de validation
C'est surtout un canevas pour te faire comprendre le fonctionnement et à toi de te l'approprier.
Si tu as des questions sur le fonctionnement, surtout, n'hésites pas à les poser.
mon problème c'est que je ne sait pas comment associé l'intitulé des deux
Il existe plusieurs solutions, mais je te propose celle-ci qui est très facile à mettre en oeuvre :
- lorsque tu crées tes checkbox, tu mets dans la propriété "tag" le nom du combobox associé
- ensuite à partir du checkbox tu peux accéder au combobox associé
Pour te permettre de voir comment faire, je te propose cette macro associée au bouton de validation
Private Sub CommandButton1_Click() Dim cellule As String ' libellés choisis Dim Ctrl As Control ' controles formulaire cellule = "" ' initialisation libellés For Each Ctrl In Me.Controls ' balayage des controles If TypeOf Ctrl Is MSForms.CheckBox Then ' recherche des checkbox If Ctrl.Value = True Then ' le checkbox est coché ' si nouvelle ligne ajout saut de ligne If Not cellule = "" Then cellule = cellule & Chr(10) ' récupération libellé checkbox cellule = cellule & "- " & Ctrl.Caption ' si pas de combobox associé suppression controle erreur On Error Resume Next If Not Me.Controls(Ctrl.Tag) < 0 Then ' si le combobox est choisi cellule = cellule & " " & Me.Controls(Ctrl.Tag) End If On Error GoTo 0 ' remise controle erreur End If End If Next ' mise en place des choix dans feuille Sheets("Feuil1").Range("e2").Value = cellule End Sub
C'est surtout un canevas pour te faire comprendre le fonctionnement et à toi de te l'approprier.
Si tu as des questions sur le fonctionnement, surtout, n'hésites pas à les poser.
simonlagaffe
Messages postés
13
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
20 juillet 2009
27 juin 2008 à 18:20
27 juin 2008 à 18:20
Un grand merci à toi!
J'ai adapté ton code a mon tableau est ça marche impeccable, c'est tout a fait ce que je voulais!!
Par contre , une petite question:
J'ai vu que dans ton cod,e tu utilise la variable "cellule" pour y attribuer le libéllé du chekbox, mais je ne vois pas comment tu lui rajoute le libellé du combobox?
Serais tu me conseiller un bon site internet ou je pourrais trouver les différente fonction du VB et comment les utiliser, pour moi en apprendre un peu plus... je suis assez curieux de pouvoir découvrir ce langage, qui me semble trés pratique pour faire beaucoup de chose!
Autre question, la propriété "Tag", à quoi correspnd t-elle en fait?
Un grand merci en tout cas!
Par contre, une fois que je relance le formulaire, celui-ci me remet les valeurs qui ont déjà été rentré. Une fonction existe pour lui demander de remettre tout à zéro?
Merci
J'ai adapté ton code a mon tableau est ça marche impeccable, c'est tout a fait ce que je voulais!!
Par contre , une petite question:
J'ai vu que dans ton cod,e tu utilise la variable "cellule" pour y attribuer le libéllé du chekbox, mais je ne vois pas comment tu lui rajoute le libellé du combobox?
Serais tu me conseiller un bon site internet ou je pourrais trouver les différente fonction du VB et comment les utiliser, pour moi en apprendre un peu plus... je suis assez curieux de pouvoir découvrir ce langage, qui me semble trés pratique pour faire beaucoup de chose!
Autre question, la propriété "Tag", à quoi correspnd t-elle en fait?
Un grand merci en tout cas!
Par contre, une fois que je relance le formulaire, celui-ci me remet les valeurs qui ont déjà été rentré. Une fonction existe pour lui demander de remettre tout à zéro?
Merci
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
27 juin 2008 à 20:18
27 juin 2008 à 20:18
bonjour
je ne vois pas comment tu lui rajoute le libellé du combobox?
En fait c'est lié à l'astuce de liaison que j(ai utilisée et c'est cette ligne qui le fait
Dans "tag" tu as mis combobox2 par exemple et donc le contrôle du formulaire Me.Controls(Ctrl.Tag) va en fait chercher la même chose que si tu faisais Me.ComboBox2 mais cela permet à la fois de gérer la liaison et en plus d'avoir un code récursif qui traite toutes les ComboBox de façon transparente.
Serais tu me conseiller un bon site internet
Tu as déjà un bon site sur ta machine si tu fais F1 lorsque tu ne comprends par une fonction ou une propriété.
Tu peux lire l'aide VBA et tu verras qu'elle est très instructive. Tu peux d'ailleurs le faire pour la propriété tag en faisant attention car elle est définie plusieurs fois et il faut prendre celle qui s'applique aux contrôles et qui en fait est une zone texte d'échange.
Tu peux aussi regarder ceci ou cela ainsi que cela
Par contre, une fois que je relance le formulaire...
Pour cela ,il faut utiliser unload userform en plus de userform.hide qui ne fait que cacher.
Si tu fais F1 sur hide, tu verras que tu aurais pu le trouver, dans "voir aussi" : c'est parfois un peu difficile d'accès mais lorsque l'on a compris la technique utilisée, c'est efficace.
Bon courage et surtout n'hésites pas à poser des questions aussi judicieuses.
je ne vois pas comment tu lui rajoute le libellé du combobox?
En fait c'est lié à l'astuce de liaison que j(ai utilisée et c'est cette ligne qui le fait
cellule = cellule & " " & Me.Controls(Ctrl.Tag)
Dans "tag" tu as mis combobox2 par exemple et donc le contrôle du formulaire Me.Controls(Ctrl.Tag) va en fait chercher la même chose que si tu faisais Me.ComboBox2 mais cela permet à la fois de gérer la liaison et en plus d'avoir un code récursif qui traite toutes les ComboBox de façon transparente.
Serais tu me conseiller un bon site internet
Tu as déjà un bon site sur ta machine si tu fais F1 lorsque tu ne comprends par une fonction ou une propriété.
Tu peux lire l'aide VBA et tu verras qu'elle est très instructive. Tu peux d'ailleurs le faire pour la propriété tag en faisant attention car elle est définie plusieurs fois et il faut prendre celle qui s'applique aux contrôles et qui en fait est une zone texte d'échange.
Tu peux aussi regarder ceci ou cela ainsi que cela
Par contre, une fois que je relance le formulaire...
Pour cela ,il faut utiliser unload userform en plus de userform.hide qui ne fait que cacher.
Si tu fais F1 sur hide, tu verras que tu aurais pu le trouver, dans "voir aussi" : c'est parfois un peu difficile d'accès mais lorsque l'on a compris la technique utilisée, c'est efficace.
Bon courage et surtout n'hésites pas à poser des questions aussi judicieuses.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
simonlagaffe
Messages postés
13
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
20 juillet 2009
27 juin 2008 à 20:25
27 juin 2008 à 20:25
Ah ok je comprend mieux pour le principe des ComboBox et l'utilité de cette fonction!
Merci pour les informations en tout cas, ej vais allez faire un tour sur ces différents site et voir avec l'aide d'Excel!
Un grand merci en tout cas pour ton aide, ça m'as été d'un grand secours!
A bientot
Merci pour les informations en tout cas, ej vais allez faire un tour sur ces différents site et voir avec l'aide d'Excel!
Un grand merci en tout cas pour ton aide, ça m'as été d'un grand secours!
A bientot
26 juin 2008 à 23:24
Je vais être plus précis dans ce que je voudrais faire:
En sélectionnant un défaut par une ChekBox et sa localisation dans une ComboBox, je souhaiterai que l'intitulé de ceux-ci s'ajoute dans une cellule du tableau (I2), et que si plusieurs défauts sont sélectionnées, que ceux ci passe à la ligne automatiquement (pour la mise en forme en fait) tout en restant dans la même cellule.
J'espère avoir été un peu plus clair et précis....
Maleureusement ej ne connais pas grand chose au langage VBA, japprend petit à petit en cherchant sur le net.
C'est mon tout premier "programme"... Si je pouvais avoir un peu plus de détail pour pouvoir mieux comprendre le code, ça sera toujorus plus interessant que de le recopier bêtement...
Merci à toi en tout cas