Boucle des checkbox

Pinfourcat Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
 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

romain7254 Messages postés 1020 Date d'inscription   Statut Membre Dernière intervention   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
Pinfourcat Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour romain
Désolé mais cela ne fonctionne toujours pas.
Merci pour la réponse.Chauliac
0
romain7254 Messages postés 1020 Date d'inscription   Statut Membre Dernière intervention   297
 
Pouvez vous envoyer un fichier d'exemple ?
0
Pinfourcat Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
romain7254 Messages postés 1020 Date d'inscription   Statut Membre Dernière intervention   297
 
Afin que je comprenne aussi pourquoi le compteur s'arrête, il me faut un fichier d'exemple :)
0
Pinfourcat Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
romain7254 Messages postés 1020 Date d'inscription   Statut Membre Dernière intervention   297
 
Alors la je suis de plus en plus perdus...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Bonne chance à vous.
0
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
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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
chauliac
 
Patrice bonjour
Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
Cordialement
Chauliac
0
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
chauliac
 
Encore merci de vos réponses.Mais le problème persiste.
Chauliac
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Peux tu nous dire qu'elles sont les propriétés Name de tes CheckBox?
0
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
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
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
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
0
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
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
chauliac
 
Patrice encore moi Chauliac
Je viens de récupérer le code.
Mille excuses.Bonne soirée.
0