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. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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. 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. Patrice bonjour
          Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
          Cordialement
          Chauliac
          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. 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. 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
              2. 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
              3. 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. 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. Patrice encore moi Chauliac
                    Je viens de récupérer le code.
                    Mille excuses.Bonne soirée.
                    0