Boucle sur plusieurs Checkbox

Bonsoir,

J'ai besoin d'un petit coup de pouce. J'ai fait un userform avec 3 checkbox. Et selon si elles sont cochées j'ajoute des valeurs dans une var tableau. Ce qui me dérange comme vous pouvez le voir dans le code c'est que je suis obligé de répéter la condition ainsi que la boucle autant de fois qu'il y a de chekbox.

Je n'ai pas réussi à faire une boucle qui tourne sur chacune d'entre elles.

J'ai tenter une array( "box1", "box2", "box3"). Mais arrive toujours un moment ou je définis le nom de l'objet en question : box & x... et pas moyen de le faire passer avec "set".

Je vous remercie par avance pour le temps que vous pourrez me consacrer

Bonne soirée

box1 = Array(48, 57)     'check 1 - nombres
box2 = Array(65, 90)     'check 2 - majuscules
box3 = Array(97, 122)    'check 3 - minuscules

ReDim valeurs(1)
If CheckBox1.Value = True Then
    For x1 = box1(1) To box1(2)
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End If
If CheckBox2.Value = True Then
   For x1 = box2(1) To box2(2)
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End If
 If CheckBox3.Value = True Then
    For x1 = box3(1) To box3(2)
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End If
28classeur.xlsm (21.37 Ko)

Bonsoir

j'ai tout compris au problème, certainement un peu la fatigue mais plutot que d'attendre l'appuye sur le bouton Ok pourquoi ne passer par la sub de changement d'état de chaque chekbox ???

ainsi un testant l'état de la chekbox faire le necessaire....

Private Sub CheckBox1_Click()
Dim x1 As Byte

Dim box1 As Variant

ReDim valeurs(1)
box1 = Array(48, 57)     'check 1 - nombres

If CheckBox1.Value = True Then
    For x1 = box1(1) To box1(2)
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End If
End Sub

Private Sub CheckBox2_Click()

End Sub

Private Sub CheckBox3_Click()

End Sub

fred

çà à l'air pas mal du tout, dans chaque événements je met un call vers une unique procédure changeant ma var tableau.

Mais est-ce que ce n'est pas un peu compliqué dans le cas où je décoche de devoir suppr des valeurs de la var tableau ?

Moi aussi je suis un peu fatigué ce soir !

edit - càd que mon objectif c'est de ne pas avoir à écrire trois fois mon bloc

If CheckBox1.Value = True Then
    For x1 = box1(1) To box1(2)
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End If

Or dans ta proposition je l'écris trois fois mais dans des procédures évènementielles. Le call par contre semble déjà plus adapté mais quand est-il d'un décochage ?

bonjour

reprenons un petit peu

si j'ai bien compris maintenant le soucis initiale voici une proposition

Private Sub CommandButton1_Click()
'-----------------------------------------
'box1 = Array(48, 57)     'check 1 - nombres
'box2 = Array(65, 90)     'check 2 - majuscules
'box3 = Array(97, 122)    'check 3 - minuscules

ReDim valeurs(1)

If CheckBox1.Value = True Then remplir_tab 48, 57  'check 1 - nombres
If CheckBox2.Value = True Then remplir_tab 65, 90   'check 2 - majuscules
 If CheckBox3.Value = True Then remplir_tab 97, 122  'check 3 - minuscules
Stop
'-----------------------------------

End Sub

Sub remplir_tab(deb As Byte, fin As Byte)
Dim x1 As Byte
For x1 = deb To fin
        valeurs(UBound(valeurs)) = x1
        ReDim Preserve valeurs(1 To UBound(valeurs) + 1)
    Next x1
End Sub

fred

Les call (argument).... Je n'y avait pas pensé, merci beaucoup !

Je viens de découvrir aussi sur le forum ce matin :

Cells(l, c).Value = Me.Controls("TextBox" & j).Value

avec une boucle sur un controls.counts, à tester.

Merci Fred pour le temps passé sur mon cas ! Bonne journée

Rechercher des sujets similaires à "boucle checkbox"