Bonjour à toutes et à tous,

Je vous remercie pour l'accueil et d'avance pour votre aide.
Etant grand débutant en vba et les outils liés à Excel je galère quelque peu à essayer d'implémenter le userform que je souhaite activer dans mon tableau excel.

Mon userform dispose de 20 textbox ainsi que de 12 checkbox.

Le but est double :
Je souhaite faire retenir les valeurs entrées dans chacune des textbox dans une cellule bien précise d'un feuillet (ex: textbox1 va dans cellule A1; textbox2 va dans celuule A2, etc.); ainsi que d'entrer une valeur correspondant au fait d'avoir ticker ou non les checkbox (checkbox1 est enregistré dans cellule B1, checkbox2 dans cellule B2, etc.). Par la suite chacune des valeurs rentrées resteront dans le userform. Pour cela la sauvegarde des valeurs entrées se fera via un bouton "save".

Pour une valeur donnée (une pour une textbox et une checkbox) j'ai rentré le code suivant qui fonctionne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub CommandButton15_Click()
 
   If CheckBox1.Value = True Then
   Worksheets("sheet1").Range("C2") = "Check"
   Else
   Worksheets("sheet1").Range("C2") = ""
   End If
 
    Worksheets("sheet1").Range("A5").Value = TextBox2.Value
 
End Sub
 
Private Sub UserForm_Initialize()
  If Worksheets("sheet1").Range("C2") = "Check" Then
  CheckBox1.Value = True
  Else
  CheckBox1.Value = False
  End If
 
  TextBox2.Value = Worksheets("sheet1").Range("A5").Value
 
End Sub

Pour toutes les autres checkbox et textbox, je peux faire de même, mais je me demandais si en utilisant une fonction for i = 1 to x on ne pourrait pas automatiser cela ?
un truc du genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton15_Click()
 
   Dim i As Integer
   For i = 1 To 12
   If CheckBox(i) = True Then
   Worksheets("sheet1").Range("C2" & i) = "Check"
   Else
   Worksheets("sheet1").Range("C2" & i) = ""
   End If
   i = i + 1
   Next i
 
   Dim i As Integer
   For i = 1 To 20
   Worksheets("sheet1").Range("A" & i).Value = TextBox(i).Value
   i = i+ 1
   Next i
 
End Sub
Et par la suite faire son pendant pour que les valeurs soient enregistrés dans l userform même lors de l'ouverture.
Cependant, je viens vers vous car malheureusement cela ne fonctionne pas.
Pourriez-vous svp me dire ce que je dois changer ou faire pour que cela fonctionne ?
Merci par avance et bonne journée à vous.
Cdt
A.