Boucle des checkbox

Bonjour à tous

Mon problème est le suivant
Dans une macro excel j'ai un useform avec 31 checkbox dans un frame1.
J'utilise une boucle pour les faire tourner.
Mais celle -ci n'en comptabilise que 28.
En vous remerciant à l'avance de votre réponse .
Chauliac.
Private Sub CommandButton2_Click()
Dim plage As String
Dim mois As String
Dim k As Integer
Dim i As Integer

For k = 0 To 30
If k = 0 Then plage = ("b")
If k = 1 Then plage = ("c")
If k = 2 Then plage = ("d")
If k = 3 Then plage = ("e")
If k = 4 Then plage = ("f")
If k = 5 Then plage = ("g")
If k = 6 Then plage = ("h")
If k = 7 Then plage = ("i")
If k = 8 Then plage = ("j")
If k = 9 Then plage = ("k")
If k = 10 Then plage = ("l")
If k = 11 Then plage = ("m")
If k = 12 Then plage = ("n")
If k = 13 Then plage = ("o")
If k = 14 Then plage = ("p")
If k = 15 Then plage = ("q")
If k = 16 Then plage = ("r")
If k = 17 Then plage = ("s")
If k = 18 Then plage = ("t")
If k = 19 Then plage = ("u")
If k = 20 Then plage = ("v")
If k = 21 Then plage = ("w")
If k = 22 Then plage = ("x")
If k = 23 Then plage = ("y")
If k = 24 Then plage = ("z")
If k = 25 Then plage = ("aa")
If k = 26 Then plage = ("ab")
If k = 27 Then plage = ("ac")
If k = 28 Then plage = ("ad")
If k = 29 Then plage = ("ae")
If k = 30 Then plage = ("af")
If k = 31 Then plage = ("ag")
If Frame1(k).Value = True Then
  Range(plage & 8).Interior.ColorIndex = 6
End If
Next
End Sub

16 réponses

  1. Patrice encore moi Chauliac
    Je viens de récupérer le code.
    Mille excuses.Bonne soirée.
    0
    1. Patrice bonsoir
      Je viens d'ouvrir votre réponse et elle fonctionne très bien.
      Par contre je n'ai pas pu trouver le code pour le comprendre et essayer
      de l'appliquer.
      Encore merci de s'être pencher sur mon cas.
      Amicalement
      Chauliac.
      0
      1. Bonjour

        Private Sub CommandButton2_Click()
        Dim Lig As Long
        Dim C As Long
        Lig = 8
        With Sheets("Feuil1")
        For C = 1 To 31
        If Controls("CheckBox" & C).Value = True Then
        .Cells(Lig, C + 1).Interior.ColorIndex = 6
        Else
        .Cells(Lig, C + 1).Interior.ColorIndex = xlNone
        End If
        Next
        End With
        End Sub

        A+
        Maurice
        0
        1. Les propriétés name des checkbox
          sont tout simplement
          checkbox1 pour le premier et ainsi de suite .
          Cela a une importance?
          Cordialement
          Chauliac
          0
          1. Modérateur
            Essaye donc ce test :

            Sub test()
            Dim i As Integer
            For i = 1 To 31
            'ICI essaye plusieurs syntaxes :
            'If CheckBox1 = True
            If Me.Frame1.Controls("CheckBox" & i).Value = True Then
            MsgBox "Le checkbox " & i & " est true"
            Else
            MsgBox "Le checkbox " & i & " est False"
            End If
            Next i
            End Sub
            0
        2. Encore merci de vos réponses.Mais le problème persiste.
          Chauliac
          0
          1. Modérateur
            Peux tu nous dire qu'elles sont les propriétés Name de tes CheckBox?
            0
        3. Modérateur
          Bonjour tout le monde,

          En reprenant la procédure de Patrice :

          Option Explicit
          Private Sub CommandButton2_Click()
          Dim w As Worksheet
          Dim i As Integer
            'Définir la feuille de calcul concernée
            Set w = ActiveSheet
            'Mettre à jour les couleurs en fonction des chekbox
            For i = 1 To 31
              If Me.Frame1.Controls("CheckBox" & i).Value = True Then
                w.Cells(8, i + 1).Interior.ColorIndex = 6
              Else
                w.Cells(8, i + 1).Interior.ColorIndex = xlColorIndexNone
              End If
            Next i
          End Sub

          0
          1. Bonjour
            Pour sélectionner une cellule avec une macro le code est Range ("a1") pour la première cellule.
            Je voudrai sélectionner la cellule 31 de la ligne 1.
            donc le code est range("ae,1").

            deja ne pas mettre Range dans ton cas
            Range ("A1") = Cells(1,1)
            Range("AE1"). = Cells(1,31)

            A+

            Maurice
            0
            1. Patrice bonjour
              Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
              Cordialement
              Chauliac
              0
              1. Bonjour,

                Essaies ce code :
                Option Explicit
                Private Sub CommandButton2_Click()
                Dim w As Worksheet
                Dim i As Integer
                'Définir la feuille de calcul concernée
                Set w = ActiveSheet
                'Mettre à jour les couleurs en fonction des chekbox
                For i = 1 To Frame1.Controls.Count
                If Frame1.Controls(i - 1).Value = True Then
                w.Cells(8, i + 1).Interior.ColorIndex = 6
                Else
                w.Cells(8, i + 1).Interior.ColorIndex = xlColorIndexNone
                End If
                Next i
                End Sub
                0
                1. Pour sélectionner une cellule avec une macro le code est Range ("a1") pour la première cellule.
                  Je voudrai sélectionner la cellule 31 de la ligne 1.
                  donc le code est range("ae,1").
                  Voilà pourquoi ma boucle . attribue des lettres .
                  Si cela peux mieux aider ?
                  Chauliac
                  0
                  1. Je vous remercie encore pour votre patience.
                    Je vais laisser tomber et peut-être trouver une autre solution.
                    Merci
                    Chauliac
                    0
                    1. Désolé mais je n'ai vraiment pas compris l'histoire du "Donc le code sera range("ad & 12"). "

                      Bonne chance à vous.
                      0
                  2. Désolé d'user de votre temps
                    Mais je n'ai que ce code dans ma macro.
                    Les plages sélectionnées par la boucle sont simplement pour insérer dans les cellules.
                    Ex:if le checkbox 28 est =true ma plage sera ("ad").
                    Donc le code sera range("ad & 12").
                    Mais la boucle ne veux plus avancer au delà .
                    Salutations
                    Chauliac
                    0
                    1. Alors la je suis de plus en plus perdus...
                      0
                  3. Re bonjour
                    Vous me demander un fichier d'exemple.
                    Je n'en est point.
                    Je voudrai comprendre pour quelle raison le compteur s'arrète.
                    encore mes remerciments
                    Chauliac
                    0
                    1. Afin que je comprenne aussi pourquoi le compteur s'arrête, il me faut un fichier d'exemple :)
                      0
                  4. Bonjour romain
                    Désolé mais cela ne fonctionne toujours pas.
                    Merci pour la réponse.Chauliac
                    0
                    1. Pouvez vous envoyer un fichier d'exemple ?
                      0
                  5. Bonjour,

                    Peut être modifier le
                    For k = 0 To 30
                    en
                    For k = 0 To 40
                    car votre k = 31 ne sera pas comptabilisé.

                    Cordialement, Romain.
                    0