Bonjour à tous,
après des heures de recherche dans de nombreux forums, sans trouver de réponse à mon problème, j'ai décidé de sauter le pas et de poster mon premier message sur ce forum.
Dans un fichier Excel, je souhaite masquer via une macro des colonnes sur tous les onglets, nombre et noms imprévisibles et variables, sauf sur 2 d'entre eux, à savoir "Liste" et "Paramétrage".
De plus, selon les points de vue choisis dans l'onglet "Paramétrage", les colonnes à masquer ne sont pas les mêmes.
Au départ, j'avais nommé chaque feuille où le colonnage doît être appliqué dans mon code et celui fonctionnait très bien.
Dans un but de simplication et puisque le nombre d'onglets sera finalement variable, j'ai décidé d'intégrer une boucle.
Problème, la macro ne s'exécute que sur l'onglet actif, voire même sur Paramétrage si je suis positionnée dessus.
Précision pour le code ci-dessous: le nom "Phase" a bien été déclaré dans le fichier via le Gestionnaire de nom.
Merci d'avance pour votre aide.
après des heures de recherche dans de nombreux forums, sans trouver de réponse à mon problème, j'ai décidé de sauter le pas et de poster mon premier message sur ce forum.
Dans un fichier Excel, je souhaite masquer via une macro des colonnes sur tous les onglets, nombre et noms imprévisibles et variables, sauf sur 2 d'entre eux, à savoir "Liste" et "Paramétrage".
De plus, selon les points de vue choisis dans l'onglet "Paramétrage", les colonnes à masquer ne sont pas les mêmes.
Au départ, j'avais nommé chaque feuille où le colonnage doît être appliqué dans mon code et celui fonctionnait très bien.
Dans un but de simplication et puisque le nombre d'onglets sera finalement variable, j'ai décidé d'intégrer une boucle.
Problème, la macro ne s'exécute que sur l'onglet actif, voire même sur Paramétrage si je suis positionnée dessus.
Précision pour le code ci-dessous: le nom "Phase" a bien été déclaré dans le fichier via le Gestionnaire de nom.
Merci d'avance pour votre aide.
Code:
Sub Colonnage()
Application.ScreenUpdating = False
Dim Sh As Worksheet
For Each Sh In Worksheets
If Sh.Name <> "Liste" Or Sh.Name <> "Paramétrage" Then
'Colonnes à masquer si PHASE = ""
If Worksheets("Paramétrage").Range("PHASE").Value = "" Then
Call ToutAfficher
'Colonnes à masquer si PHASE = ESTIME
ElseIf Worksheets("Paramétrage").Range("PHASE").Value = "ESTIME" Then
Union(Range("E1"), Range("U1:Z1")).Select
Selection.EntireColumn.Hidden = True
'Colonnes à masquer si PHASE = BUDGET
ElseIf Worksheets("Paramétrage").Range("PHASE").Value = "BUDGET" Then
Union(Range("E1"), Range("O1:Q1"), Range("U1:Z1")).Select
Selection.EntireColumn.Hidden = True
'Colonnes à masquer si PHASE = REEL
ElseIf Worksheets("Paramétrage").Range("PHASE").Value = "REEL" Then
Union(Range("E1"), Range("O1:Z1")).Select
Selection.EntireColumn.Hidden = True
End If
End If
Next Sh
Application.ScreenUpdating = True
End Sub
Sub ToutAfficher()
Dim Sh As Worksheet
For Each Sh In Worksheets
If Sh.Name <> "Liste" Or Sh.Name <> "Paramétrage" Then
Sh.Columns("D:Z").Hidden = False
End If
Next
End Sub
Dernière édition: