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
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
A voir également:

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 juin 2008 à 23:36
bonjour

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.
0
simonlagaffe Messages postés 13 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 20 juillet 2009
26 juin 2008 à 23:24
Mes liste sonts gérées par une ComboBox que j'ai créer dans un userform
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
26 juin 2008 à 23:53
bonjour

Donc tu as autant de combobox que de chekbox ?

Comment tu associes la combobox_truc à la chekbox_machin ?
0
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
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"
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
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
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.
0
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
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
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
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.
0

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
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
0