CheckBox

Rebonjour! J'étais venu ce matin sur le forum et on m'avait bien aidé en me donnant un code que j'ai modifié à ma guise ensuite:

Dim dl As Integer
  Dim i As Integer, Msg As String
  Dim Valeur

  Valeur = Array(0, "Alésage", "Chemin", "Collet", "Epaulement", "Portée de Joint", "H", "H1", "Face: Petite", "Face: Grande", "EXT", "INT")  'valeur des checkbox, tu peux mettre autre chose

 With Sheets("Demande")
  dl = 4
  On Error GoTo 1
   For i = 1 To 11                                         'boucle sur les checkbox
        If Me.Controls("CheckBox" & i) = True Then Msg = Msg & Valeur(i) & " ,"
      Next i
      Range("D" & dl) = Left(Msg, Len(Msg) - 1)  'écrit la valeur des checkbox cochées
1
Dim Msg2 As String
  Valeur = Array(0, "Circularité", "Rugosité", "Longueur/Angle")  'valeur des checkbox, tu peux mettre autre chose

   For i = 12 To 14                                        'boucle sur les checkbox
        If Me.Controls("CheckBox" & i) = True Then Msg2 = Msg2 & Valeur(i) & " ,"
      Next i
      Range("E" & dl) = Left(Msg2, Len(Msg2) - 1)  'écrit la valeur des checkbox cochées
End With

Ma Userform contient 2 catégories de Check list, 11 pour la surface, qui doivent s'afficher en D4 et 3 pour la caractéristique qui doivent s'afficher en E4, malheureusement, actuellement ça ne fonctionne pas pour les caractéristiques (deuxième partie du code), voyez vous pourquoi?

Bonjour,

Pour les checkbox 1 à 11,

  For i = 1 To 11                                         'boucle sur les checkbox
        If Me.Controls("CheckBox" & i) = True Then Msg = Msg & Valeur(i) & " ,"

fonctionne parce que i donne l'indice de checkbox et l'indice du tableau valeur.

Par contre pour les checkbox 12 à 14

Valeur = Array(0, "Circularité", "Rugosité", "Longueur/Angle")  'valeur des checkbox, tu peux mettre autre chose
   For i = 12 To 14                                        'boucle sur les checkbox
        If Me.Controls("CheckBox" & i) = True Then Msg2 = Msg2 & Valeur(i) & " ,"

, l'indice des checkbox ne correspond plus avec le tableau valeur.

Les indices du tableau vont 0 à xx. Ici de 0 à 3 (donc 4 éléments)

donc avec i = 12 on aura checkbox12 (ok) mais valeur(12) et comme valeur ne contient que 4 éléments ... erreur !

Une solution consisterait à modifier la valeur de l'indice dans le tableau valeur pour que son élément corresponde:

For i = 12 To 14                                        'boucle sur les checkbox
        If Me.Controls("CheckBox" & i) = True Then Msg2 = Msg2 & Valeur(i - 11) & " ,"

pour checkbox 12 on aura valeur(1) soit : "Circularité"

Par ailleurs, attention, avec

Range("D" & dl) =.....

l'écriture se fera sur la feuille courante ( et pas forcément sur la feuille "Demande") malgré le With Sheets("Demande")

pour "rattacher" le range à la feuille précisée dans le With, utiliser "." :

.Range("D" & dl) =.....

A+

Ca fonctionne! Merci!

Rechercher des sujets similaires à "checkbox"