masquer des lignes lorsqu'une plage est soit vierge, soit contient 0

sdevers

XLDnaute Nouveau
Bonjour cher forum,

J'ai l'habitude de trouver via les anciens posts les réponses à mes questions mais là visiblement je suis le premier à vouloir faire cela (ou alors j'ai mal cherché, c'est également possible).

J'ai un fichier où j'ai créé différents tableaux. Si ces tableaux sont vides ou s'ils ne contiennent que des 0 (que ce soit un 0 ou une formule renvoyant 0), j'aimerais masquer certaines lignes.

Le tableau dont je fais référence est celui que j'ai nommé "participations_content" (cellules $B$9 à $M$24). J'ai volontairement exclu la colonne A car elle contiendra du texte dans le modèle de base. Si ce tableau est vide, je voudrais masquer une zone plus large, en l'occurence un tableau nommé "participations" (lignes $5 à $28).

Pour le moment ma macro est celle-ci:
Sub hide()

'Masquer les lignes "Détail des participations"
Set plage1 = Range("participations_content")

If Application.CountA(plage1) = 0 Then
Range("participations").EntireRow.Hidden = True
Else: Range("participations").EntireRow.Hidden = False
End If

End Sub​

Ca fonctionne pas mal, mais uniquement si mes cellules sont complètement vides. Si je laisse trainer un 0 ou si je laisse une formule (par exemple SUM), rien ne disparait.

Je vous annexe mon fichier, sans doute que ça vous aidera...

Merci d'avance pour votre aide
 

Pièces jointes

  • Test hidden2.xlsm
    25.8 KB · Affichages: 28
  • Test hidden2.xlsm
    25.8 KB · Affichages: 32

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : masquer des lignes lorsqu'une plage est soit vierge, soit contient 0

Bonjour sdevers et bienvenue sur XLD :),

Un essai dans le fichier joint avec pour code:
VB:
Sub hide()
'Ca fonctionne mais il faudrait qu'on puisse y laisser également
'des 0 ou des formules renvoyant 0.
'Ca éviterait au collaborateur de devoir effacer le conteu
'de chaque tableau pour qu'il masque les lignes.

Application.ScreenUpdating = False
With Application.WorksheetFunction
  'Masquer les lignes "Détail des participations"
  Set plage = Range("participations_content")
  Range("participations").EntireRow.Hidden = _
      .CountIf(plage, 0) + .CountIf(plage, "") = plage.Count
  
  'Masquer les lignes "Détail des montants non appelés sur participations (-)"
  Set plage = Range("participations_non_appelés_content")
  Range("participations_non_appelés").EntireRow.Hidden = _
      .CountIf(plage, 0) + .CountIf(plage, "") = plage.Count
  
  'Masquer les lignes "Détail des réductions de valeur sur participations"
  Set plage = Range("participations_red_valeur_content")
  Range("participations_red_valeur").EntireRow.Hidden = _
      .CountIf(plage, 0) + .CountIf(plage, "") = plage.Count
End With
End Sub
 

Pièces jointes

  • sdevers-Test hidden2-v1.xlsm
    27.5 KB · Affichages: 31

Discussions similaires

Réponses
2
Affichages
140
Réponses
12
Affichages
545

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260