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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Sub essai_colonnes()
Call visu_col(levisu:=True)
End Sub
Procédure appelée

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ), j'aurais souhaité ne pas utiliser de boucle.

Mais cette ligne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Worksheets("Reporting").ListObjects("T_Liste").ListColumns(liste_colonnes).Range.EntireColumn.Hidden = Not levisu
génère une erreur
(Idem si j'utilise Evaluate).

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 )
Pour ma part, je trouve la méthode Union un peu lourde

Par avance, merci pour vos éclairantes lumières.