Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !
 

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

 

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


@+ 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…