Cacher des lignes sous conditions
RésoluEt merci d'avance pour votre aide.
J'aimerais avoir des lignes cacher sous certaines conditions tel que si ma cellule B19 est vide alors elle est masquée mais si c'est rempli alors elle est visible
De même pour mes lignes de 19 à 46 avec toujours mes cellules B"" qui sont la condition.
J'aimerais également que le code se fasse automatiquement a chaque fois que je clique sur l'onglet de ma feuille car les données sont saisies ailleurs.
Merci pour votre aide
3 réponses
Masquage automatique de lignes dans Excel selon les valeurs de la colonne B, notamment B19 et B19:B46, est discuté via des scripts VBA déclenchés à l'activation de la feuille. Plusieurs réponses proposent des scripts VBA déclenchés lors de l'activation de la feuille, utilisant notamment l'événement Worksheet_Activate et des méthodes comme SpecialCells(xlCellTypeBlanks) pour masquer les lignes concernées. Des variantes existent, incluant une boucle For x=19 To 46 qui teste chaque ligne de la colonne B et ajuste l'affichage, ou des versions ciblant des plages spécifiques comme 8:14 et 16:22. En complément, plusieurs interventions signalent l'importance d adapter le déclencheur à la feuille concernée et d'éviter les doublons de procédures, afin de préserver la lisibilité et la maintenance du code.
-
Bonjour,
code a mettre dans la fenetre VBA de la feuille:
Private Sub Worksheet_Activate() Dim x As Byte For x = 19 To 46 If Cells(x, 2) = "" Then Rows(x).EntireRow.Hidden = True 'masque Else Rows(x).EntireRow.Hidden = False 'affiche End If Next x End Sub -
ContributeurBonjour
Macro à copier coller dans le module feuille concernée
se déclenche lorsqu'on active la feuille
Option Explicit
'---------------------------
Private Sub Worksheet_Activate()
On Error Resume Next
Range("B19:B46").EntireRow.Hidden = False
Range("B19:B46").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
-
-
J'ai besoin de ça maintenant :
Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées
Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées
Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées
Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées.
Sachant que le code de ma feuille est ça :
Private Sub Worksheet_Activate()
Dim x As Byte
For x = 43 To 162
If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then
Rows(x).EntireRow.Hidden = True 'masque
Else
Rows(x).EntireRow.Hidden = False 'affiche
End If
Next x
End Sub
Merci d'avance -
@celine31190Re,
Private Sub Worksheet_Activate() Dim x As Byte 'Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées If Cells(6, 7) = "" Or Cells(6, 7) = 0 Then Rows(6).EntireRow.Hidden = True 'masque Else Rows(6).EntireRow.Hidden = False 'affiche End If 'Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées If Cells(17, 7) = "" Or Cells(17, 7) = 0 Then Rows(17).EntireRow.Hidden = True 'masque Else Rows(17).EntireRow.Hidden = False 'affiche End If 'Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées If Cells(25, 7) = "" Or Cells(25, 7) = 0 Then Rows(25).EntireRow.Hidden = True 'masque Else Rows(25).EntireRow.Hidden = False 'affiche End If 'Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées. If Cells(33, 7) = "" Or Cells(33, 7) = 0 Then Rows(33).EntireRow.Hidden = True 'masque Else Rows(33).EntireRow.Hidden = False 'affiche End If 'B43 a B162 For x = 43 To 162 If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then Rows(x).EntireRow.Hidden = True 'masque Else Rows(x).EntireRow.Hidden = False 'affiche End If Next x End Sub -
-
Contributeur@celine31190Désolé je n'avais pas vu les précédents dialogues
-
-
Bonjour,
Devais etre un dans le gaz hier soir, code corrige:
Private Sub Worksheet_Activate() Dim x As Byte 'Quand G6 est vide ou =0, les lignes de 8 à 14 sont cachées If Cells(6, 7) = "" Or Cells(6, 7) = 0 Then Rows("8:14").EntireRow.Hidden = True 'masque Else Rows("8:14").EntireRow.Hidden = False 'affiche End If 'Quand G17 est vide ou =0, les lignes de 16 à 22 sont cachées If Cells(17, 7) = "" Or Cells(17, 7) = 0 Then Rows("16:22").EntireRow.Hidden = True 'masque Else Rows("16:22").EntireRow.Hidden = False 'affiche End If 'Quand G25 est vide ou =0, les lignes de 24 à 30 sont cachées If Cells(25, 7) = "" Or Cells(25, 7) = 0 Then Rows("24:30").EntireRow.Hidden = True 'masque Else Rows("24:30").EntireRow.Hidden = False 'affiche End If 'Quand G33 est vide ou =0, les lignes 32 à 38 sont cachées. If Cells(33, 7) = "" Or Cells(33, 7) = 0 Then Rows("32:38").EntireRow.Hidden = True 'masque Else Rows("32:38").EntireRow.Hidden = False 'affiche End If 'B43 a B162 For x = 43 To 162 If Cells(x, 2) = "" Or Cells(x, 2) = 0 Then Rows(x).EntireRow.Hidden = True 'masque Else Rows(x).EntireRow.Hidden = False 'affiche End If Next x End Sub-
-
@celine31190Re,
Vous avez peut-etre deux fois la meme procedure ou lignePrivate Sub Worksheet_Activate()
-
-
-