Condition If avec checkbox variables

Bonjour,

Je cherche à faire une boucle dans un Userform, dans lequel on cliques sur différentes Checkbox, chacune correspondant à un onglet à remplir avec le reste de la macro. Si les Checkbox ne sont pas cochées, l'onglet ne se remplira pas et il passera au suivant.

Je vous mets le code ci-dessous, il bloque à la ligne "If Me.Controls("Checkbox" & i).Value * -1 = True Then".

Je ne m'en sors pas, j'ai testé tout type de solution que j'ai pu trouver, mais mes connaissances en VBA sont très rudimentaires/empiriques.

Quelqu'un peut-il m'aider s'il vous plaît ?

Merci d'avance

Private Sub CommandButton1_Click()

Dim i As Integer 'Checkboxi 'Sheets(i-2)
Dim j As Integer
'i = 1
j = i + 2
For i = -1 To 28
    If Me.Controls("Checkbox" & i).Value * -1 = True Then
        Sheets(i).Select
        Range("B8").Select
        Do While ActiveCell.Offset <> ""
            ActiveCell.Offset(1, 0).Select
        Loop
        ActiveCell = TextBox1
        ActiveCell.Offset(0, 1) = TextBox2
        ActiveCell.Offset(0, 2) = TextBox3
        ActiveCell.Offset(0, 3) = TextBox4
        ActiveCell.Offset(0, 4) = TextBox5
        ActiveCell.Offset(0, 5) = TextBox6
        ActiveCell.Offset(0, 6) = TextBox7
        ActiveCell.Offset(0, 7) = TextBox8
        ActiveCell.Offset(0, 8) = TextBox9
        ActiveCell.Offset(0, 9) = Now()
    End If
Next i
Unload Me
End Sub
22exemple.xlsm (887.79 Ko)

Bonjour,

le CheckBox-1 n'existe pas !

Correction du code :

Private Sub CommandButton1_Click()
Dim Worksheetdepart As Worksheet

'Boucle
Dim i As Integer 'Checkboxi 'Sheets(i-2)
Dim j As Integer
'i = 1
j = i + 2
For i = 1 To 29
    If Me.Controls("Checkbox" & i).Value = True Then
    'If .OLEObjects("Checkbox" & i).Value = True Then
        Sheets(i + 1).Select
        Range("B8").Select
        Do While ActiveCell.Offset <> ""
            ActiveCell.Offset(1, 0).Select
        Loop
        ActiveCell = TextBox1
        ActiveCell.Offset(0, 1) = TextBox2
        ActiveCell.Offset(0, 2) = TextBox3
        ActiveCell.Offset(0, 3) = TextBox4
        ActiveCell.Offset(0, 4) = TextBox5
        ActiveCell.Offset(0, 5) = TextBox6
        ActiveCell.Offset(0, 6) = TextBox7
        ActiveCell.Offset(0, 7) = TextBox8
        ActiveCell.Offset(0, 8) = TextBox9
        ActiveCell.Offset(0, 9) = Now()
    End If
Next i

'cpt.Select 'permet de revenir à la page du récap, sinon ça
'Range("A1").Select 'laisse sur la dernière ligne d'ajout

Unload Me
End Sub

Pourquoi sheets(i+1) ?

parce que i vaut 1 au premier tour et que la première feuille à modifier si le checkbox est vrai est le deuxième onglet du classeur : i=1 + 1 = 2

donc sheets(2) donc la feuille qui a pour nom "-1"

@ bientôt

LouReeD

Bonjour,

Tout d'abord merci beaucoup pour cette réponse rapide et efficace !

Ensuite, j'ai deux problèmes :

- j'avais fait en sorte que cela trie les contacts après qu'ils aient été ajouté, or cela ne le fait plus pour l'onglet "-1", sais-tu pourquoi s'il te plaît ? EDIT : j'ai trouvé !

- ensuite, y a-t-il une méthode simple pour retourner sur l'onglet sur lequel on était au moment de lancer la macro ? EDIT : idem

Merci d'avance !

Bonsoir,

merci @ vous pour vos remerciements, ainsi que pour la résolution des deux "problèmes"

@ bientôt

LouReeD

Rechercher des sujets similaires à "condition checkbox variables"