Si cellule vide masquer la ligne

an@s

XLDnaute Occasionnel
Bonjour à tous,
j'aurai une nouvelle fois besoin de votre aide si vous me le permettez !

dans le fichier ci-joint j'ai un planning de congés qui se remplit automatiquement en fonction des données que je mentionne dans l'onglet Saisie.

ce que je souhaite avoir c'est une macro qui fait deux rôles automatiquement dans l'onglet "Planning":

1-si la cellule AF12 est vide la colonne AF doit être masquée automatiquement et si AF12 n'est plus vide la colonne AF se démasque (c'est à dire si je choisi dans la liste de O9 le mois de juin AF12 sera vide et donc la colonne sera masquée et en choisissant après Août dans O9 la colonne AF sera affichée automatiquement)

2- si une ou des cellules entre A13 et A42 sont vides il faut masquer la ligne concernée automatiquement (c'est à dire si A17 est vide la ligne 17 sera masquée, mais si par la suite A17 n'est plus vide elle devra être affichée automatiquement)

Merci d'avance pour votre soutien

Cordialement
An@s
 

Pièces jointes

  • Planning.xlsm
    32 KB · Affichages: 58

an@s

XLDnaute Occasionnel
Bonjour Fanfan,
merci beaucoup pour votre réponse..la macro marche très bien comme souhaité.
il y'a juste un petit souci c'est qu'en choisissant un mois dans O9 le code prend du temps avant qu'il s’exécute

Merci
 

job75

XLDnaute Barbatruc
Bonjour an@s, François,

Les données en feuille "Saisie" peuvent être modifiées donc il vaut mieux utilise une Worksheet_Calculate.

Par ailleurs il n'y a pas que la colonne AF à masquer, voyez en février...

Cette macro est plus rapide car pas de boucle :
Code:
Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
[AD:AF].Columns.Hidden = True
[AD11].Resize(, Application.CountIf([AD11:AF11], ">0")).Columns.Hidden = False
With Range("A13:A" & Rows.Count).SpecialCells(xlCellTypeFormulas)
    .Rows.Hidden = True
    [A13].Resize(Application.CountIf(.Cells, "?*")).Rows.Hidden = False
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Planning(1).xlsm
    39.7 KB · Affichages: 64

an@s

XLDnaute Occasionnel
Bonjour Job, Fanfan,

j'ai découvert un petit souci pour ce qui concerne le masquage des lignes.
en passant d'un mois à un autre sur la cellule O9 (onglet Planning), l'affichage et le masquage des lignes se fait automatiquement et comme souhaité .

par contre si je garde le mois Août par exemple dans O9 et je change l'année dans A9 en 2019 les lignes restent vides et ne se masquent pas,
avez vous une idée sur la cause ?

vous avez raison pour fevrier, il n'y avait pas que la colonne AF à masquer

Merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour an@s, François,
par contre si je garde le mois Août par exemple dans O9 et je change l'année dans A9 en 2019 les lignes restent vides et ne se masquent pas,
avez vous une idée sur la cause ?
Parce que la formule en A13:A42 n'étudiait que le mois et pas l'année.

C'est corrigé dans ce fichier (2).

A+
 

Pièces jointes

  • Planning(2).xlsm
    40.4 KB · Affichages: 57

an@s

XLDnaute Occasionnel
Bonjour Job, fanfan, le forum

je reviens vers vous pour une petite modification sur le code que vous m'avez fourni.
je cherche à le rectifier en le mettant dans thisworkbook pour qu'il soit valable sur toutes les feuilles qui seront crées après et non pas juste l'onglet "Planning" au lieu de le copier à chaque fois, sauf les feuilles Listes & Saisie.

VB:
Option Explicit

Private Sub Worksheet_Calculate()
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
[AD:AF].Columns.Hidden = True
[AD11].Resize(, Application.CountIf([AD11:AF11], ">0")).Columns.Hidden = False
With Range("A13:A" & Rows.Count).SpecialCells(xlCellTypeFormulas)
    .Rows.Hidden = True
    [A13].Resize(Application.CountIf(.Cells, "?*")).Rows.Hidden = False
End With
Application.EnableEvents = True 'réactive les évènements
End Sub

Merci pour votre aide

An@s
 

job75

XLDnaute Barbatruc
Bonjour an@s,

Normalement vous deviez être capable de mettre au point ce code par vous-même :
Code:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
With Sh
    If .[A12] <> "NOM" Then Exit Sub
    Application.ScreenUpdating = False
    Application.EnableEvents = False 'désactive les évènements
    On Error Resume Next
    .[AD:AF].Columns.Hidden = True
    .[AD11].Resize(, Application.CountIf([AD11:AF11], ">0")).Columns.Hidden = False
    With .Range("A13:A" & .Rows.Count).SpecialCells(xlCellTypeFormulas)
        .Rows.Hidden = True
        Sh.[A13].Resize(Application.CountIf(.Cells, "?*")).Rows.Hidden = False
    End With
    Application.EnableEvents = True 'réactive les évènements
End With
End Sub
A+
 

an@s

XLDnaute Occasionnel
Bonjour Job, le Forum

je reviens vers vous pour petite rectification si vous permettez concernant le code d'hier,
au fait j'ai essayé de l'appliquer sur le fichier ci-dessous mais ça n'a pas fonctionné.
j'ai mis le code dans thisworkbook en annulant la partie ci-après qui ne concerne pas ce fichier,

VB:
    With .Range("A13:A" & .Rows.Count).SpecialCells(xlCellTypeFormulas)
        .Rows.Hidden = True
        Sh.[A13].Resize(Application.CountIf(.Cells, "?*")).Rows.Hidden = False
    End With

mais les problèmes que je rencontre c'est :
1- pour l'onglet 09-16 en cliquant sur total général et en revenant sur 09-16 la colonne AF ne se masque pas automatiquement.
2- quand je clique sur le bouton ajouter un mois pour créer le mois suivant (10-16) les trois colonnes AD, AE et AF se masquent y compris celles de 09-16

pouvez vous voir c'est quoi le problème s'il vous plait ?

Merci d'avance
An@s
 

Pièces jointes

  • Carb.xlsm
    51.9 KB · Affichages: 34

job75

XLDnaute Barbatruc
Bonjour an@s,

Avec ce nouveau fichier en ligne 8 on a des textes donc remplacer ">0" par "><" :
Code:
    .[AD8].Resize(, Application.CountIf([AD8:AF8], "><")).Columns.Hidden = False
A+
 

Pièces jointes

  • Carb(1).xlsm
    36.2 KB · Affichages: 31

an@s

XLDnaute Occasionnel
Bonjour Job, le forum
je reviens vers vous concernant le dernier fichier parce que je viens de m’apercevoir qu'il y'a un petit souci.
en créant les onglets 10-18 et 11-18 je remarque que dans les trois onglets (09-18, 10-18, 11-18) juste la colonne AF qui est masquée, tout en sachant que AF de 10-18 ne doit pas être cachée,
en revanche si je rajoute l'onglet 12-18 toutes les colonnes AF des autres onglets seront affichées.

Merci d'avance
An@s
 

Pièces jointes

  • Carb(1).xlsm
    52.4 KB · Affichages: 29

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise