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 Sub

Je vous remercie par avance.

Cordialement,

Nemnem

11userform1.frm (5.14 Ko)
10userform1.frx (5.52 Ko)

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 Sub

Ensuite 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 = False

et ça a True

ws.Rows((i + 1) & ":" & (i + 1) * 7).Hidden = True

en tous cas cela fonctionne parfaitement chez moi sans rien supprimer ni quoi, tu peux même cocher plusieurs checkboxs

Rechercher des sujets similaires à "lignes qui affichent pas mon userform"