Lignes qui ne s'affichent pas dans mon UserForm
Bonjour à toutes et à tous,
Je cherche à créer un script VBA qui doit m'afficher certaines lignes Excel de la feuille de calcul Feuil1 en fonction des cases cochées manuellement par l'utilisateur.
Pour cela j'ai créé un UserForm ; l'avantage c'est qu'il s'affiche et que je peux cocher et décocher les cases. Le problème, c'est que lorsque j'appuie sur le bouton valider, cela me renvoie au code VBA.
De plus, la dernière version de mon script supprime littéralement toutes les lignes de ma feuille1 et plus rien n'est affiché.
Le débogueur ne m'affiche plus rien et je ne suis même plus sûr de quelles lignes sont bien écrites ou pas. Si vous pouviez m'aider ce serait vraiment sympa, je m'arrache les cheveux depuis quelques jours. J'ai remplacé mes variables par des lettres pour anonymiser mon travail.
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Dim a As Boolean, b As Boolean, c As Boolean, d As Boolean, e As Boolean, f As Boolean, g As Boolean, h As Boolean, i As Boolean, j As Boolean, k As Boolean, l As Boolean, m As Boolean, n As Boolean, o As Boolean, p As Boolean, q As Boolean, r As Boolean
' Spécifiez la feuille de calcul sur laquelle vous souhaitez agir
Set ws = ThisWorkbook.Sheets("Feuil1")
' Récupérez l'état des cases à cocher
a = CheckBox1.Value
b = CheckBox2.Value
c = CheckBox3.Value
d = CheckBox4.Value
e = CheckBox5.Value
f = CheckBox6.Value
g = CheckBox7.Value
h = CheckBox8.Value
i = CheckBox9.Value
j = CheckBox10.Value
k = CheckBox11.Value
l = CheckBox12.Value
m = CheckBox13.Value
n = CheckBox14.Value
o = CheckBox15.Value
p = CheckBox16.Value
q = CheckBox17.Value
r = CheckBox18.Value
' Masquez toutes les lignes au départ
' ws.Rows.Hidden = True'
' En fonction de l'état des cases à cocher, affichez les plages de lignes correspondantes
If a Then
ws.Rows("2:8").Hidden = False
Else
ws.Rows("2:8").Hidden = True
End If
If b Then
ws.Rows("9:14").Hidden = False
Else
ws.Rows("9:14").Hidden = True
End If
If c Then
ws.Rows("15:19").Hidden = False
Else
ws.Rows("15:19").Hidden = True
End If
If d Then
ws.Rows("20:27").Hidden = False
Else
ws.Rows("20:27").Hidden = True
End If
If e Then
ws.Rows("28:35").Hidden = False
Else
ws.Rows("28:35").Hidden = True
End If
If f Then
ws.Rows("36:43").Hidden = False
Else
ws.Rows("36:43").Hidden = True
End If
If g Then
ws.Rows("44:52").Hidden = False
Else
ws.Rows("44:52").Hidden = True
End If
If h Then
ws.Rows("53:56").Hidden = False
Else
ws.Rows("53:56").Hidden = True
End If
If i Then
ws.Rows("57:61").Hidden = False
Else
ws.Rows("57:61").Hidden = True
End If
If j Then
ws.Rows("62:66").Hidden = False
Else
ws.Rows("62:66").Hidden = True
End If
If k Then
ws.Rows("67:70").Hidden = False
Else
ws.Rows("67:70").Hidden = True
End If
If l Then
ws.Rows("71:83").Hidden = False
Else
ws.Rows("71:83").Hidden = True
End If
If m Then
ws.Rows("84:90").Hidden = False
Else
ws.Rows("84:90").Hidden = True
End If
If n Then
ws.Rows("91:94").Hidden = False
Else
ws.Rows("91:94").Hidden = True
End If
If o Then
ws.Rows("95:106").Hidden = False
Else
ws.Rows("95:106").Hidden = True
End If
If p Then
ws.Rows("107:109").Hidden = False
Else
ws.Rows("107:109").Hidden = True
End If
If q Then
ws.Rows("110:111").Hidden = False
Else
ws.Rows("110:111").Hidden = True
End If
If r Then
ws.Rows("112:118").Hidden = False
Else
ws.Rows("112:118").Hidden = True
End If
' Fermez la UserForm
Me.Hide
End Sub
Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub UserForm_Click()
End SubJe vous remercie par avance.
Cordialement,
Nemnem
Bonjour
En premier merci de bien vouloir compléter le profil de votre compte en y indiquant la version excel (2007, 2013, 2019, MAC2011, .....). C'est toujours plus facile pour celui qui doit vous répondre
Pour votre demande ce serait plus utile d'avoir votre fichier avec l'USerform dont vous parlez
de mon coté je ne sais rien faire avec les deux fichiers que vous avez posté
Cordialement
Bonjour a vous deux à tester
Private Sub CommandButton1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Feuil1")
' Définir un tableau de contrôle de cases à cocher
Dim checkBoxes(1 To 18) As MSForms.CheckBox
Set checkBoxes(1) = CheckBox1
Set checkBoxes(2) = CheckBox2
Set checkBoxes(3) = CheckBox3
Set checkBoxes(4) = CheckBox4
Set checkBoxes(5) = CheckBox5
Set checkBoxes(6) = CheckBox6
Set checkBoxes(7) = CheckBox7
Set checkBoxes(8) = CheckBox8
Set checkBoxes(9) = CheckBox9
Set checkBoxes(10) = CheckBox10
Set checkBoxes(11) = CheckBox11
Set checkBoxes(12) = CheckBox12
Set checkBoxes(13) = CheckBox13
Set checkBoxes(14) = CheckBox14
Set checkBoxes(15) = CheckBox15
Set checkBoxes(16) = CheckBox16
Set checkBoxes(17) = CheckBox17
Set checkBoxes(18) = CheckBox18
' Masquer toutes les lignes au départ
ws.Rows("2:118").Hidden = True
' Parcourir les cases à cocher et afficher/cacher les lignes en conséquence
Dim i As Integer
For i = 1 To 18
If checkBoxes(i).Value Then
ws.Rows((i + 1) & ":" & (i + 1) * 7).Hidden = False
End If
Next i
' Fermer le UserForm
Me.Hide
End SubEnsuite si c'est le contraire que tu veux tu mets ça pour tout afficher au départ, et quand tu coches ça cache les lignes.
ws.Rows("2:118").Hidden = Falseet ça a True
ws.Rows((i + 1) & ":" & (i + 1) * 7).Hidden = Trueen tous cas cela fonctionne parfaitement chez moi sans rien supprimer ni quoi, tu peux même cocher plusieurs checkboxs