Erreur Objet - Masquer un tableau

Bonjour,

Je souhaite masquer des lignes d'un tableau + des lignes de plage présentes en dessous et au dessus de ce tableau.

Sub delete_table()

Dim Option_1 As ListObject

Set Composants = Worksheets("Chiffrage").ListObjects("Composants")
Set Offre = Worksheets("Offre").ListObjects("Offre")
Set Option_1 = Worksheets("Offre").ListObjects("Option_1")
Set Option_2 = Worksheets("Offre").ListObjects("Option_2")
Set Option_3 = Worksheets("Offre").ListObjects("Option_3")
Set Option_4 = Worksheets("Offre").ListObjects("Option_4")
Set Option_5 = Worksheets("Offre").ListObjects("Option_5")

Sheets("Chiffrage").Activate
Dim tableau_ecriture As ListObject

i = Composants.DataBodyRange.Rows.Count

For ligne = 1 To Composants.DataBodyRange.Rows.Count

    a = Composants.DataBodyRange(ligne, 6).Value
    Select Case Composants.DataBodyRange(ligne, 6).Value

    Case Is <> "Option 1"
    Sheets("Offre").Select
    f = Option_1.Range(1, 1).row
'    Range("Option_1[[#All]]").Select
'    Selection.EntireRow.Hidden = True
    y = f - 1
    w = f + 5
    Sheets("Offre").Activate
    Z = Option_1.DataBodyRange.Rows.Count
    ActiveSheet.Rows(f - 1 & ":" & f + 5 + Option_1.DataBodyRange.Rows.Count).Hidden = True

'    Case "Option 2"
'        Set tableau_ecriture = Option_2
'        Case "Option 3"
'        Set tableau_ecriture = Option_3
'        Case "Option 4"
'        Set tableau_ecriture = Option_4
'        Case "Option 5"
'        Set tableau_ecriture = Option_5

    End Select
Next

End Sub

Le problème est qu'une fois arrivé à la variable Z, une erreur apparait m'indiquant "Variable Objet ou Variable de bloc With non définie".

J'ai essayé de rectifier mon problème, mais rien ne fonctionne !

Saurez-vous m'aider svp ?

Bonjour,

A+

Bonjour,

Utilisez cette instruction

Z = Option_1.ListRows.Count

et non

Z = Option_1.DataBodyRange.Rows.Count

car si votre tableau structuré est vide, l'utilisation de "DataBodyRange" renvoie une erreur.

Par ailleurs, il est plus simple de déclarer vos tableaux structurés sans référence à la feuille où ils sont logés :

Sub delete_table()

    Dim composants As ListObject, Option_1 As ListObject, Option_2 As ListObject, Option_3 As ListObject, Option_4 As ListObject, Option_5 As ListObject

    Set composants = [composants].ListObject
    Set Offre = [Offre].ListObject
    Set Option_1 = [Option_1].ListObject
    Set Option_2 = [Option_2].ListObject
    Set Option_3 = [Option_3].ListObject
    Set Option_4 = [Option_4].ListObject
    Set Option_5 = [Option_5].ListObject

    Sheets("Chiffrage").Activate

    i = composants.DataBodyRange.Rows.Count

    For ligne = 1 To composants.ListRows.Count

        a = composants.DataBodyRange(ligne, 6).Value
        Select Case composants.DataBodyRange(ligne, 6).Value

            Case Is <> "Option 1"
            Sheets("Offre").Select
            f = Option_1.HeaderRowRange.Row
        '    Range("Option_1[[#All]]").Select
        '    Selection.EntireRow.Hidden = True
            y = f - 1
            w = f + 5
            Sheets("Offre").Activate
            Z = Option_1.ListRows.Count

Super, ça fonctionne !

Merci beaucoup pour les conseils !

Rechercher des sujets similaires à "erreur objet masquer tableau"