Microsoft 365 SelectionChange est-ce la bonne saisie

Fipat

XLDnaute Occasionnel
Bonjour,

Nouvelle sollicitation.

J’utilise ce code pour pouvoir masquer des colonnes.

VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If Not Application.Intersect(Target, Range("G1")) Is Nothing Then
'        Application.ScreenUpdating = False
        Range("A:AY").EntireColumn.Hidden = False 'affiche tout

    '*** masque les colonnes indiquées ****
        If Target = 2022 Then Range("Q:AY").EntireColumn.Hidden = False
        If Target = 2023 Then Range("Q:R").EntireColumn.Hidden = True
        If Target = 2024 Then Range("Q:T").EntireColumn.Hidden = True
    Range("G1").Select
    End If

End Sub

Mon souci est qu'afficher l'année je le fait via un segment.
J'ai ajouté Range("G1").Select en espérant que cela prenne en compte le changement de la cellule mais cela ne change rien.
Je suis obligé de faire un clique sur la cellule G1 pour mes colonnes se cachent, ou s’affichent selon la sélection.

Fichier en PJ pour mieux comprendre ma demande.
Merci pour votre aide.
 

Pièces jointes

  • test Fml.xlsm
    23.8 KB · Affichages: 2
Solution
C
Bonjour Fipat,

Le changement de valeur de la cellule se fait par une formule, indétectable dans un évèment Change

Il faut utiliser Calculate()
VB:
Private Sub Worksheet_Calculate()
  If Range("G1") = 2022 Then Range("Q:AY").EntireColumn.Hidden = False
  If Range("G1") = 2023 Then Range("Q:R").EntireColumn.Hidden = True
  If Range("G1") = 2024 Then Range("Q:T").EntireColumn.Hidden = True
End Sub
A+
C

Compte Supprimé 979

Guest
Bonjour Fipat,

Le changement de valeur de la cellule se fait par une formule, indétectable dans un évèment Change

Il faut utiliser Calculate()
VB:
Private Sub Worksheet_Calculate()
  If Range("G1") = 2022 Then Range("Q:AY").EntireColumn.Hidden = False
  If Range("G1") = 2023 Then Range("Q:R").EntireColumn.Hidden = True
  If Range("G1") = 2024 Then Range("Q:T").EntireColumn.Hidden = True
End Sub
A+
 

Discussions similaires