Table de données: Passer un Array à l'objet ListColumns
Bonsoir les amis,
(Désolé pour cette absence de réponse. Surbooké.)
Question (simple?)
Pourquoi VBA ne reconnait-il pas un array comme paramètre de l'objet ListColumns?
Précision préalable:
Les colonnes choisies sont disjointes.
Procédure appelante
Code:
1 2 3
| Public Sub essai_colonnes()
Call visu_col(levisu:=True)
End Sub |
Procédure appelée
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Public Sub visu_col(levisu As Boolean)
'https://stackoverflow.com/questions/45356240/vba-for-selecting-a-number-of-columns-in-an-excel-table
'https://www.mrexcel.com/board/threads/select-3-of-6-list-columns.568383/
Dim liste_colonnes As Variant, lacol As Variant
liste_colonnes = Array("Répertoire 1", "Répertoire 3", "Répertoire 4", "Répertoire 5", "Répertoire 6", "Répertoire 7", "Type de fichier", "Nom du fichier")
For Each lacol In liste_colonnes
Worksheets("Reporting").ListObjects("T_Liste").ListColumns(lacol).Range.EntireColumn.Hidden = Not levisu
Next lacol
End Sub |
Ce code est effectif.
Néanmoins (comme dirait Cyrano :D), j'aurais souhaité ne pas utiliser de boucle.
Mais cette ligne
Code:
Worksheets("Reporting").ListObjects("T_Liste").ListColumns(liste_colonnes).Range.EntireColumn.Hidden = Not levisu
génère une erreur
(Idem si j'utilise Evaluate).
Citation:
9 - L'indice n'appartient pas à la sélection.
Sauf erreur, il est possible de paramétrer l'objet Worksheets par un array.
Pourquoi pas ListColumns?
Moi qui parle anglais comme une vache italienne, j'ai consulté les 2 espaces figurant dans mon code, MrExcel et stackoverfow (qui peuvent être précieux par ailleurs :ccool:)
Pour ma part, je trouve la méthode Union un peu lourde
Par avance, merci pour vos éclairantes lumières.