Boucle des checkbox
Pinfourcat
Messages postés
5
Statut
Membre
-
chauliac -
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.
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
-
Bonjour,
Peut être modifier leFor k = 0 To 30
enFor k = 0 To 40
car votre k = 31 ne sera pas comptabilisé.
Cordialement, Romain. -
Bonjour romain
Désolé mais cela ne fonctionne toujours pas.
Merci pour la réponse.Chauliac -
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 -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je vous remercie encore pour votre patience.
Je vais laisser tomber et peut-être trouver une autre solution.
Merci
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 -
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
-
Patrice bonjour
Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
Cordialement
Chauliac -
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 -
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
-
-
Les propriétés name des checkbox
sont tout simplement
checkbox1 pour le premier et ainsi de suite .
Cela a une importance?
Cordialement
Chauliac -
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.
-
Voici un exemple :
https://www.cjoint.com/14fe/DBzt1U0snOT__classeur1.xlsm
-
-
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 -
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. -