CheckBox
Rebonjour!
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!