Bonjour à tous,

Je cale sur un point de mon code malgré pas mal de recherches, alors je me lance pour mon premier post :

J'ai une feuille sur laquelle je peux avoir besoin de faire une "remise à zéro", càd supprimer toutes les données renseignées par l'utilisateur, en conservant toutes les mises en forme, les formules etc. Jusque là ok, aucun problème.

Par soucis de lisibilité, j'ai un certain nombre de colonnes que j'ai groupées (via le bouton "grouper" de la section "plan"), mais que l'utilisateur peut choisir d'afficher ou non, s'il en a besoin ou non : AA:AE, AM:AV, BL:BM, BQ, BS, BU, BW et DB.

Lors de la remise à zéro, je veux que ces colonnes soient masquées (comme si on appuyait sur le petit "-" de notre plan, au-dessus des titres de colonnes). J'arrive à le faire avec un ensemble de colonnes contiguës :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
With ActiveSheet.Columns("AA:AE")
If Not .Hidden Then
    .Hidden = True
    Else: .Hidden = True
End If
End With
Mon problème est que j'aimerais "standardiser" la chose, ou du moins la rendre plus propre, sans avoir à taper 8 fois ce morceau de code pour les 8 ensembles que j'ai nommés plus haut. J'ai essayé de définir une Union de ces colonnes, mais je ne maitrise pas cette commande et du coup ma boucle FOR ne fonctionne pas dans le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Set plage = Union(Columns("AA:AE"), Columns("AM:AV"), Columns("BL:BM"), Columns("BQ"), Columns("BS"), Columns("BU"), Columns("BW"), Columns("DB"))
For Each Columns In plage
If Not .Hidden Then
        .Hidden = True
        Else: .Hidden = True
    End If
Next
Ce code me renvoie une "Erreur de compilation: Variable requise. Impossible de l'affecter à cette expression"

Quelqu'un aurait-il une piste ?

Merci d'avance !

Moulinois