Boucle des checkbox

Pinfourcat Messages postés 5 Statut Membre -  
 chauliac -
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. romain7254 Messages postés 1071 Statut Membre 297
     
    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
  2. Pinfourcat Messages postés 5 Statut Membre
     
    Bonjour romain
    Désolé mais cela ne fonctionne toujours pas.
    Merci pour la réponse.Chauliac
    0
    1. romain7254 Messages postés 1071 Statut Membre 297
       
      Pouvez vous envoyer un fichier d'exemple ?
      0
  3. Pinfourcat Messages postés 5 Statut Membre
     
    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. romain7254 Messages postés 1071 Statut Membre 297
       
      Afin que je comprenne aussi pourquoi le compteur s'arrête, il me faut un fichier d'exemple :)
      0
  4. Pinfourcat Messages postés 5 Statut Membre
     
    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. romain7254 Messages postés 1071 Statut Membre 297
       
      Alors la je suis de plus en plus perdus...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pinfourcat Messages postés 5 Statut Membre
     
    Je vous remercie encore pour votre patience.
    Je vais laisser tomber et peut-être trouver une autre solution.
    Merci
    Chauliac
    0
    1. romain7254 Messages postés 1071 Statut Membre 297
       
      Désolé mais je n'ai vraiment pas compris l'histoire du "Donc le code sera range("ad & 12"). "

      Bonne chance à vous.
      0
  7. chauliac
     
    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
  8. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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
  9. chauliac
     
    Patrice bonjour
    Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
    Cordialement
    Chauliac
    0
  10. foo
     
    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
  11. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  12. chauliac
     
    Encore merci de vos réponses.Mais le problème persiste.
    Chauliac
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Peux tu nous dire qu'elles sont les propriétés Name de tes CheckBox?
      0
  13. chauliac
     
    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. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  14. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Mon code ne dépends pas du nom du checkbox, il n'y a apparemment pas de raison pour que ça ne fonctionne pas !

    As-tu un message d'erreur, si oui lequel ???

    mets un exemple de ton fichier sur https://www.cjoint.com/
    et mets le lien obtenu dans ton prochain message.

    0
  15. foo
     
    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
  16. chauliac
     
    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
  17. chauliac
     
    Patrice encore moi Chauliac
    Je viens de récupérer le code.
    Mille excuses.Bonne soirée.
    0