Bonjour,
Je fais un peu de VBA, et je trouves toujours ce que je veux faire grâce aux forums. Mais pas aujourd'hui, j'espère trouver de l'aide par ce tout premier post :
Sur ma feuille excel, j'ai 4 CheckBox, qui correspondent chacun à un "Kit" → CheckBox1 = Kit1, CheckBox2 = Kit2, etc...
J'aimerais que si je coche "Kit1", il me fasse apparaitre des lignes en lien avec le Kit1, et que si je le décoche, que ça le fasse disparaitre.
Pour ça, c'est bon, j'ai le code suivant :
Private Sub CheckButton1_Click()
Application.ScreenUpdating = False 'Pour accélérer la procédure
Dim Kit1 As Range 'CheckButton1 = J'ai renommé les CheckBox par "CheckButton"
Dim Kit2 As Range 'CheckButton2
Dim Kit3 As Range 'CheckButton3
Dim Kit4 As Range 'CheckButton4
Set Kit1 = Rows("11:19") 'je définis les lignes associées au kit
Set Kit2 = Rows("20:28")
Set Kit3 = Rows("29:36")
Set Kit4 = Rows("38:43")
If CheckButton1 Then
Kit1.Hidden = False
Else
Kit1.Hidden = True
End If
If CheckButton2 Then
Kit2.Hidden = False
Else
Kit2.Hidden = True
End If
'Faut répéter le même petit code pout Kit3 et Kit4
Application.ScreenUpdating = True
End Sub
J'ai 2 problèmes :
- Ce type de code (le Private Sub CheckButton1 () ) ne fonctionne que pour le CheckBox1. Si je coche après CheckBox2, il ne se passe rien...
- J'aimerais créer une boucle pour anticiper l'arrivée de nouveau kit, j'avais pensé au code ci-dessous, mais il ne fonctionne pas...
Private Sub CheckButton_Click()
Application.ScreenUpdating = False 'Pour accélérer la procédure
Dim i As Integer
Dim Kit1 As Range 'CheckButton1 = J'ai renommé les CheckBox par "CheckButton"
Dim Kit2 As Range 'CheckButton2
Dim Kit3 As Range 'CheckButton3
Dim Kit4 As Range 'CheckButton4
Set Kit1 = Rows("11:19") 'je définis les lignes associées au kit
Set Kit2 = Rows("20:28")
Set Kit3 = Rows("29:36")
Set Kit4 = Rows("38:43")
For i = 1 To 4
If Controls("CheckButton" & i) Then 'si coché
"Kit" & i.Hidden = False 'le tableau apparait
Else
"Kit" & i.Hidden = True 'le tableau disparait
End If
Next
Application.ScreenUpdating = True
End Sub
J'avais trouvé cette boucle dans la partie "LES CASES A COCHER (CHECKBOX)" du site : https://excel-pratique.com/fr/vba/controles
Mais ça ne marche pas car :
- Il considère le "Private Sub CheckButton_Click ()" comme "(Générale)"
- Et il n'apprécie pas les deux lignes : Kit & i.Hidden → si je met des parenthèses, des guillemets, les deux ou aucun, il me dit "Erreur de compilation"
J'aimerai que mon code vba :
- fonctionne pour toutes mes CheckBox,
- faire fonctionner ma boucle
Pouvez-vous m'aider ?
Pour rappel :
Les CheckBox ne sont pas dans un UserForm, ils sont directement dans des cellules de ma feuille Excel
Merci d'avance
Partager