Boucle des checkbox

Fermé
Pinfourcat Messages postés 5 Date d'inscription mardi 25 février 2014 Statut Membre Dernière intervention 25 février 2014 - Modifié par pijaku le 25/02/2014 à 16:40
 chauliac - 25 févr. 2014 à 20:59
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 mardi 23 décembre 2008 Statut Membre Dernière intervention 10 janvier 2018 297
Modifié par romain7254 le 25/02/2014 à 14:33
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 mardi 25 février 2014 Statut Membre Dernière intervention 25 février 2014
25 févr. 2014 à 14:52
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 mardi 23 décembre 2008 Statut Membre Dernière intervention 10 janvier 2018 297
25 févr. 2014 à 14:54
Pouvez vous envoyer un fichier d'exemple ?
0
Pinfourcat Messages postés 5 Date d'inscription mardi 25 février 2014 Statut Membre Dernière intervention 25 février 2014
25 févr. 2014 à 15:05
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 mardi 23 décembre 2008 Statut Membre Dernière intervention 10 janvier 2018 297
25 févr. 2014 à 15:10
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 mardi 25 février 2014 Statut Membre Dernière intervention 25 février 2014
25 févr. 2014 à 15:23
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 mardi 23 décembre 2008 Statut Membre Dernière intervention 10 janvier 2018 297
25 févr. 2014 à 15:25
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 mardi 25 février 2014 Statut Membre Dernière intervention 25 février 2014
25 févr. 2014 à 15:30
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 mardi 23 décembre 2008 Statut Membre Dernière intervention 10 janvier 2018 297
25 févr. 2014 à 15:33
Désolé mais je n'ai vraiment pas compris l'histoire du "Donc le code sera range("ad & 12"). "

Bonne chance à vous.
0
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 févr. 2014 à 16:02
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
Patrice bonjour
Merci de s'intéresser à mon cas mais désolé cela ne fonctionne point.
Cordialement
Chauliac
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
25 févr. 2014 à 16:47
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
Encore merci de vos réponses.Mais le problème persiste.
Chauliac
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
25 févr. 2014 à 16:56
Peux tu nous dire qu'elles sont les propriétés Name de tes CheckBox?
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
25 févr. 2014 à 19:20
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 févr. 2014 à 19:25
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
25 févr. 2014 à 19:54
0
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
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
Patrice encore moi Chauliac
Je viens de récupérer le code.
Mille excuses.Bonne soirée.
0