Afficher / masquer selon entête de colonne

  • Initiateur de la discussion Initiateur de la discussion RootDje
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

R

RootDje

Guest
Bonjour !
Après avoir fouillé dans les archives du site, j'ai pu adapter un code pour pouvoir afficher ou non certaines colonnes selon les entêtes. Voir le fichier en attaché :
  • Cellule A1 : Tout => on affiche toute les colonnes
  • Cellule A1 : N => affiche seulement les colonnes avec entête N
  • etc...
Le soucis, c'est que l'on ne peut afficher qu'un seul entête, et pas plusieurs, c'est tout ou un seul entête...😛
J'aimerais le faire évoluer pour pouvoir afficher des colonnes qui correspondent à 2 entêtes différents. Dans mon fichier, afficher les colonnes N et les colonnes N-1, par exemple.
Une bonne âme pour me donner un coup de main ?
Merci !! 😎
 

Pièces jointes

Re : Afficher / masquer selon entête de colonne

Bonsoir RootDje,

Voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet, Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s, cel As Range
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
If [A1] = "" Or [A1] = "Tout" Then Columns.Hidden = False: Exit Sub
Application.ScreenUpdating = False
Columns("E:S").Hidden = True 'colonnes A:D non masquées
For Each s In Split([A1], " / ")
  For Each cel In [E3:S3]
    If cel = s Then cel.EntireColumn.Hidden = False
  Next
Next
End Sub
Edit 1 : pour un fichier .xls la liste en Feuil2 doit être nommée.

Edit 2 : heureux de te croiser kjin 🙂

A+
 

Pièces jointes

Dernière édition:
Re : Afficher / masquer selon entête de colonne

Re,

Tiens, un phénomène que je n'avais jamais remarqué.

Je suis sur Excel 2010 et sur le fichier .xls, la flèche de la liste déroulante reste affichée (mais inactive) quand on sélectionne une autre cellule que A1.

La flèche s'efface bien sur le fichier .xlsm ci-joint.

A+
 

Pièces jointes

Re : Afficher / masquer selon entête de colonne

Merci beaucoup job75 ! 😎
Ca fait le travail pile poil ! Je viens juste de me rendre compte que le fichier que j'avais mis en PJ n'avait pas le code... je viens d'apprendre que les xlsx ne prenaient pas en compte les macros...
en tous cas merci beaucoup !!
++
 
Re : Afficher / masquer selon entête de colonne

Bonjour RootDje, kjin, le forum,

Avec le masquage des colonnes les bordures n'allaient pas bien en ligne 2.

Voilà qui est mieux :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s, cel As Range
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
If [A1] = "" Or [A1] = "Tout" Then
  Columns.Hidden = False
Else
  Columns("E:S").Hidden = True 'colonnes A:D non masquées
  For Each s In Split([A1], " / ")
    For Each cel In [E3:S3]
      If cel = s Then cel.EntireColumn.Hidden = False
    Next
  Next
End If
'---Bordures---
Application.DisplayAlerts = False
For Each s In Array("E2:G2", "H2:M2", "N2:S2")
  With Range(s)
    .Merge
    .UnMerge
    .Value = .Cells(1)
    With .SpecialCells(xlCellTypeVisible)
      With Range(.Areas(1), .Areas(.Areas.Count))
        .Merge
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeRight).Weight = xlThin
      End With
    End With
  End With
Next
End Sub
Fichiers (2).

A+
 

Pièces jointes

Re : Afficher / masquer selon entête de colonne

La cerise sur le gateau !! 😀
Cependant quand je l'intègre dans mon fichier de travail, ca plante lors de l'affichage N-1, parce que sur certains groupes de celulles, je n'ai pas la donnée en N-1 et donc pas d'entete N-1 en ligne 3, du coup j'ai "Erreur d'execution '1004' Pas de cellules correspondantes...
 
Re : Afficher / masquer selon entête de colonne

Re,

Le tableau Array("E2:G2", "H2:M2", "N2:S2") correspond aux plages de cellules fusionnées (ou unique).

Il faut bien sûr l'adapter correctement sur votre fichier.

Maintenant si un titre en ligne 2 peut être masqué, pour éviter le bug sur SpecialCells :

Code:
'---Bordures---
Application.DisplayAlerts = False
On Error Resume Next 'si pas de SpecialCells
'----
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
618
B
Réponses
3
Affichages
1 K
Retour