Microsoft 365 VBA pour répéter - cacher 2 colonnes consécutives selon la valeur d'une cellule.

Didjo

XLDnaute Nouveau
Bonjour,
Dans un tableau, j'ai crée un code VBA pour cacher deux colonnes consécutives "D:E" en fonction d'une valeur de la colonne E.
Je pourrais répéter ce code pour toutes les colonnes consécutives selon les valeurs de la ligne 2 mais il y en a beaucoup dans mon fichier et je risque d'en rajouter.
J'ai donc besoin d'aide pour propager ce code sur tout un range de colonnes (cacher D:E si E2=0; cacher F:G si G2=0; cacher H:I si I2=0, etc.…).

Dans l'exemple ci dessous je veux cacher les colonnes "D:E" (car E2=0) & cacher les colonnes "H:I" (car I2=0)
B
C
D
E
F
G
H
I
J
K
L
M
N
O
Sous Totaux
0
3
0
4
3
1
SCE
NOM
JPYOK
eta YOK
KRPUS
eta PUS
HKHKG
eta HKG
CNSHA
eta SHA
TWKEL
eta KEL
TWKHH
eta KHH
SERVICE 1
FIORDLAND
10
30/07/2024--N
120
05/08/2024--N
0
23/07/2024--N
54
07/08/2024--N
SERVICE 1
RANGHAI
11
06/08/2024--Y
100
12/08/2024--Y
1
30/07/2024--N
SERVICE 1
DESGRADES
2
06/08/2024--N
152
12/08/2024--N
SERVICE 1
MAIKALY
0
4
08/08/2024--N

Ci dessous le code que j'utilise (et que je répète pour chaque colonne)
-----
Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("E2:E2") = 0 Then

'Columns("D:E").EntireColumn.Hidden = True

Else

''Autrement visible

If Range("E2:E2") <> 0 Then

Columns("D:E").EntireColumn.Hidden = False

End If
End If

End Sub
-------
 

Pièces jointes

  • test hide columnS2.xlsm
    19 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Didjo, et bienvenu sur XLD,
Aucune de vos feuilles ne ressemblent à votre exemple, et votre fichier en xlsx n'a évidemment aucune macro.
De plus les colonnes DE de votre exemple semblent plutôt être CD si on se base sur la Feuil1.
Serait il possible d'être plus précis ? :)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Didjo :), @sylvanu ;),

Un essai dans le fichier joint.

Double-cliquer sur la cellule C2 agit comme un interrupteur va-et-vient : tantôt on masque les colonnes tantôt on les affiche.

L'évènement choisi est le double-clique pour ne pas multiplier inutilement les appels à la procédure et surtout permettre d'afficher toutes les colonnes (même à zéro au cas où on voudrait y faire des modifications).

Le code :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Static ToutAfficher As Boolean
Dim dercol&, i&
   If Target.Address(0, 0) <> "C2" Then Exit Sub
   Cancel = True: Application.ScreenUpdating = False
   Columns.Hidden = False
   If Not ToutAfficher Then
      dercol = Cells(2, Columns.Count).End(xlToLeft).Column
      For i = 5 To dercol Step 2: Columns(i - 1).Resize(, 2).Hidden = Cells(2, i) = 0: Next
   End If
   ToutAfficher = Not ToutAfficher
End Sub
 

Pièces jointes

  • Didjo-(dé)masquer colonnes- v1.xlsm
    20.4 KB · Affichages: 12
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 082
Membres
112 653
dernier inscrit
flapynot7x