Erreur Objet - Masquer un tableau
J
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 SubLe 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 ?
thevPassionné d'Excel
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Utilisez cette instruction
Z = Option_1.ListRows.Countet non
Z = Option_1.DataBodyRange.Rows.Countcar 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.CountJ
Super, ça fonctionne !
Merci beaucoup pour les conseils !