VBA : Masquer colonne en fonction de la valeur d'une cellule

Bonjour à tous,

avant tout merci à vous d'être dispo pour aider les non-initiés tel que moi dans leur projets.

Malgré de longues recherches sur internet et le forum, je ne trouve pas de réponse à mon problème qui est celui-ci :

Je travailles sur un grand tableau contenant de nombreuses lignes et colonnes.

il se présente a peu près comme cela :

Désignation / Janvier / février /.../ Décembre/ CUMUL / Janvier / février/ .../ décembre /CUMUL/...

ces mois ne concernent qu'une seule année mais sur des sujets différents. du coup je souhaiterais que ne s'affiche que le mois sur lequel je travaille et le cumul; le mois je l'aurais préalablement rempli dans une cellule, cela de façon non automatique.

si quelqu'un peu m'aider parce que là c'est vraiment plus gérable j'ai en moyenne une répétition de 5 fois Janvier à décembre sur chaque onglet et j'ai pas mal d'onglets....

Merci beaucoup d'avance à celui qui pourra me sauver.

Bonjour et bienvenu,

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour,

Une piste. Les colonnes qui ne sont pas du mois en cours (aujourd'hui janvier) seront cachées. Les entêtes de colonnes étant en ligne 1.

A adapter :

Sub Test()

    Dim Plage As Range
    Dim Cel As Range

    'défini la plage sur la ligne 1 de la feuille active
    With ActiveSheet: Set Plage = .Range(.Cells(1, 1), .Cells(1, .Columns.Count).End(xlToLeft)): End With

    'rend visible toutes les colonnes...
    Plage.Columns.Hidden = False

    'puis cache les colonnes qui ne sont pas du mois en cours (à adapter...)
    For Each Cel In Plage

        Cel.EntireColumn.Hidden = Not (UCase(Cel.Value) = UCase(MonthName(Month(Date))))

    Next Cel

End Sub

Voilà mon petit fichier... comme tu verras il est un peu large...

Un exemple avec deux boutons !

Merci!! c'est trop génial!!

Je pourrais abuser encore un peu? Comment puis-je ajouter pour laisser exclure du cacher les colonnes Year to Date?

Re,

Remplace la procédure "Masquer" existante par celle-ci :

Sub Masquer()

    Dim Plage As Range
    Dim Cel As Range

    'défini la plage sur la ligne 1 de la feuille active
    With ActiveSheet: Set Plage = .Range(.Cells(3, 6), .Cells(3, .Columns.Count).End(xlToLeft)): End With

    Application.ScreenUpdating = False

    'puis cache les colonnes qui ne sont pas du mois en cours (à adapter...)
    For Each Cel In Plage

        If UCase(Cel.Value) = UCase(Range("B1").Value) Or Cel.Value = "Year to Date" Then

            Cel.EntireColumn.Hidden = False

        Else

            Cel.EntireColumn.Hidden = True

        End If

    Next Cel

    Application.ScreenUpdating = True

End Sub

FANTASTIQUE!!!!

Merci beaucoup pour votre aide et votre rapidité! c'est pile ce que je cherchais!!

merci merci merci

Bonjour,

Heureux d'avoir pu t'aider

Rechercher des sujets similaires à "vba masquer colonne fonction valeur"