masquer ligne dont cellule B = 0

eastwick

XLDnaute Impliqué
Bonjour à toutes et tous,
Plutôt que filtrer, j'aimerais un code qui masque les lignes d'un tableau A1:B70 quand les cellules B(n° de ligne) sont égales à 0 et qu'elles apparaissent quand elle ne sont plus égales à 0 !

Merci beaucoup.
 

Papou-net

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Bonjour eastwick,

Puisque tu n'as pas mis de pièce jointe, voici un exemple avec une macro événementielle qui se déclenche lorsqu'une cellule est modifiée en B1:B70.

A +

Cordialement.
 

Pièces jointes

  • Exemple eastwick.xlsm
    15.1 KB · Affichages: 59
  • Exemple eastwick.xlsm
    15.1 KB · Affichages: 52

st007

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Bonjour,
Code:
Sub Lignes_masquer_si_nul()
Dim c As Range
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False
For Each c In Range("a1:a70")
    If c.Offset(, 1) = 0 Then c.EntireRow.Hidden = True
Next
Application.ScreenUpdating = True
End Sub

pas rafraîchis ni placé de pièce jointe pour essais ....
Réédité après relecture complète de ce post, et donc modifié la pièce jointe en fonction de ma compréhension.
@ vous lire
 

Pièces jointes

  • test.xlsm
    17 KB · Affichages: 37
  • test.xlsm
    17 KB · Affichages: 45
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Bonjour eastwick, Papou-net, st007



une proposition.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim cel As Range
For Each cel In Range("b1:b70")
If cel.Value = "0" Then cel.EntireRow.Hidden = True
Next cel
Application.EnableEvents = True
End Sub

'DANS UN MODULE STANDARD

Sub affiche()
Dim cel As Range
Application.ScreenUpdating = False
With Sheets("Feuil1")
For Each cel In .Range("b1:b70")
If cel.EntireRow.Hidden = True Then cel.EntireRow.Hidden = False
Next cel
End With
End Sub



A+ :cool:
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Bonjour Papou-net,
J'ai copié ton code, les lignes à 0 restent visibles. Normal ???

RE:

Bien que le problème semble réglé, je viens répondre à ta question: non, ce n'est pas normal. As-tu testé mon code? Chez moi il fonctionne parfaitement. Es-tu certain d'avoir bien retranscrit le code sur ton fichier?

Cordialement.


PS: bonjour st007, Lone-wolf.
 

job75

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Bonsoir eastwick, Papou-net, st007, Lone-wolf,

Plutôt que filtrer, j'aimerais un code qui masque les lignes (...)

Pourquoi pas les deux ? Avec le filtre avancé :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With [A1].CurrentRegion '1ère cellule à adapter
  If Intersect(Target, .Columns(2)) Is Nothing Then Exit Sub
  .Cells(2, .Columns.Count + 1) = "=RC[-" & .Columns.Count - 1 & "]<>0"
  .AdvancedFilter xlFilterInPlace, .Cells(1, .Columns.Count + 1).Resize(2)
  .Cells(2, .Columns.Count + 1) = ""
End With
End Sub

Sub Afficher()
On Error Resume Next
Me.ShowAllData
End Sub
Fichier joint.

Bonne soirée.
 

Pièces jointes

  • Filtre avancé(1).xlsm
    27.5 KB · Affichages: 46

job75

XLDnaute Barbatruc
Re : masquer ligne dont cellule B = 0

Re,

J'ai testé avec des tableaux dont une cellule sur 2 en colonne B est vide, toujours avec les 4 colonnes.

Sur Win 8 - Excel 2013 durée d'exécution de la macro du post #9 :

- 10 000 lignes => 0,09 seconde

- 100 000 lignes => 0,52 seconde.

A+
 

Discussions similaires

Réponses
55
Affichages
3 K

Statistiques des forums

Discussions
312 310
Messages
2 087 113
Membres
103 474
dernier inscrit
taha1995