Programation CheckBox Excel VBA

Résolu
simonlagaffe Messages postés 15 Statut Membre -  
simonlagaffe Messages postés 15 Statut Membre -
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
Configuration: Windows XP - Excel 2003
Internet Explorer 7.0

5 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. simonlagaffe Messages postés 15 Statut Membre
       
      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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Donc tu as autant de combobox que de chekbox ?

    Comment tu associes la combobox_truc à la chekbox_machin ?
    0
    1. simonlagaffe Messages postés 15 Statut Membre
       
      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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. simonlagaffe Messages postés 15 Statut Membre
       
      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
  4. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. simonlagaffe Messages postés 15 Statut Membre
     
    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