Macro Excel / Masquer et démasquer dynamiquement colonnes

Résolu/Fermé
Absolu0 Messages postés 2 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 21 avril 2020 - Modifié le 21 avril 2020 à 11:41
Absolu0 Messages postés 2 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 21 avril 2020 - 21 avril 2020 à 14:56
Bonjour,

je débute en programmation VBA et je rencontre pour l'une de mes macros excel un petit soucis.

Voici une image de mon tableur en exemple:


Nous avons:
ligne 1 --> année
Ligne 2--> date du lundi de chaque semaine
Ligne 3 --> n° de la semaine en relation avec la ligne 2

Le fichier contient deja ces infos de la semaine 1-2020 jusque semaine 53-2022. Les données sont masquées selon la configuration "Semaine actuelle (rouge) moins 2 jusque semaine actuelle plus 12 (orange)." (les couleurs sont des mises en formes conditionnelles et donc dynamisées)

Cette configuration doit être conservée et chaque semaine je dois masquer une des semaines précédentes et démasquer une semaine suivante. Donc en semaine 18, je masque U et je démasque AJ et ainsi de suite.
Je souhaite m'épargner de le faire manuellement et je veux une macro qui me permette d'un simple click d'actualiser les semaines dans la configuration voulue.

C'est ici le dynamisme qui me pose problème. Auriez-vous une idée?


Merci par avance.
A voir également:

2 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 avril 2020 à 14:07
Bonjour,

Faire Alt F11 sur la feuille concernée pour accéder à l'éditeur

coller ce code dans le module de la feuille.

Il se déclenchera au double clic sur la ligne 3 et sur la colonne concernée

Avec les commentaires, adapter pour coller au mieux. j'ai fait de l'a peu près n'ayant qu'une image:

Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim macolonne As String
Dim dercolonne As String
Dim avantcolonne As String
If Not Application.Intersect(Target, Rows(3)) Is Nothing Then 'ligne 3
macolonne = Col2Let(Target.Column)
avantcolonne = Col2Let(Target.Column - 2) '2 colonnes avant
dercolonne = Col2Let(Target.Column + 12) '12 colonnes après
    Columns(macolonne & ":" & dercolonne).Select 'affiche jusqu'a 12 colonnes
    Selection.EntireColumn.Hidden = False
      Columns("G:" & avantcolonne).Select 'masque colonne G jusque  2 colonnes avant
    Selection.EntireColumn.Hidden = True
    End If
End Sub
Public Function Col2Let(ByVal numCol As Long) As String
Col2Let = Split(Cells(, numCol).Address, "$")(1) '$A$1
End Function

1
Absolu0 Messages postés 2 Date d'inscription mardi 21 avril 2020 Statut Membre Dernière intervention 21 avril 2020
21 avril 2020 à 14:56
Merci beaucoup pour votre rapidité et votre solution. Ca fonctionne super bien!!!

Cordialement,

Loic
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
21 avril 2020 à 14:02
bonjour, peux-tu montrer le code de la macro, sans le dynamisme?
cela nous aidera à te guider dans l'ajout du dynamisme.
0