Masquer colonne tableau référence structurée [macro Excel]

Alex Bou

XLDnaute Nouveau
Bonjour à tous,

Je cherche à masquer une (plusieurs) colonne(s) d'un tableau avec un bouton.

Une fonction comme
VB:
Range("T:X").EntireColumn.Hidden = True
fonctionne bien sûr. Mais si j'ajoute une colonne, rien ne va plus, il faut retoucher au code.

Je voudrais donc pouvoir utiliser les références structurées du tableau comme par exemple pour 1 seule colonne :

VB:
Range("Eleves[Compétence1]").EntireColumn.Hidden = True

Mais ça ne fonctionne pas. J'ai pas mal cherché mais je ne trouve pas cet exemple sur internet. Et pour plusieurs colonnes contigües comment faire ?

Merci d'avance pour vos avis !
 

Lolote83

XLDnaute Barbatruc
Salut ALEX BOU,
En mettant entre crochet les colonnes que tu souhaites cacher comme : Range("Tab_Client[[Adresse1]:[Ville]]").Columns.Hidden = True
1574429533074.png

@+ Lolote83
 

Alex Bou

XLDnaute Nouveau
Merci, ça ne marche pas, voici la ligne exacte que j'utilise pour ce tableau:
VB:
Range("VI[[Mener une recherche et une veille d'information]:[Protéger les données personnelles et la vie privée]]").Columns.Hidden = True

Est-ce que cela vien des noms trop longs avec accents et espaces ?

Je souhaite masquer de N jusque T inclus

Capture.PNG
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Je ne sais pas répondre à ta question, mais sur les test que j'ai fait sur mon fichier, cela fonctionnait.
Essaye avec un tableau plus petit et des noms plus courts, mais j'y crois pas trop.
Sinon, tu as toujours la possibilité de masquer les colonnes à la mano, ou de faire un données->Grouper et tu auras tes colonnes masquées avec un petit + pour afficher/masquer
Clic sur le + et cela affiche les colonnes
1574434554595.png

1574434577561.png

@+ Lolote83
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Alex Bou, Lolote83

Fonctionne chez moi
(1ere exécution Masque , 2ième exécution => Démasque)
VB:
Sub MasqueDemasque_NT()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1) 'ici adapter selon besoin
tbl.DataBodyRange(, 14).Resize(, 7).EntireColumn.Hidden = Not tbl.DataBodyRange(, 14).Resize(, 7).EntireColumn.Hidden
End Sub
Je te laisse faire les adaptation au niveau du tableau (nom)
 

Staple1600

XLDnaute Barbatruc
Re

Celle-ci aussi (et elle prend un peu moins de place)
VB:
Sub MasqueDemasque_NT_v2()
Dim tbl As ListObject, rng As Range
Set tbl = ActiveSheet.ListObjects(1): Set rng = tbl.DataBodyRange(, 14).Resize(, 7)
rng.EntireColumn.Hidden = Not rng.EntireColumn.Hidden
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 136
dernier inscrit
Zoulander