Macro : compteur ligne visible (filtre)

Bonjour,

Je souhaite réaliser un code ne s'appliquant que sur les lignes visibles d'une feuille excel.

En fait, je souhaite masquer des lignes visibles qui sont vides pour certaines conditions (si 2 lignes visibles et vides se suivent alors masquer une ligne).

Mon problème est que je n'arrive pas à compter uniquement les lignes visible de la feuille.

Quand j'utilise for i = 0 to Sheets("données graph").Range("B" & Rows.Count).End(xlUp).Row , je voudrai que le comptage se fasse pour toutes les lignes visibles sinon mon code ne marche pas.

Avec mon code, si deux lignes visibles vides sont séparées d'une autre ligne masquée alors ça compte la ligne masquée.

je voudrais que ça compte uniquement les lignes visibles.

Par exemple: ligne 1 visible; ligne 2 masquée, ligne 3 visible.

Mon compteur i à la ligne 3 devrait être i = 2 et non i = 3.

Sub MasquerLignesVides()
Dim i As Long
Dim MyRng As Range
Dim VisibleRows As Long
Dim Derlig As Long

Derlig = Sheets("données graph").Range("B" & Rows.Count).End(xlUp).Row
Set MyRng = Sheets("données graph").Range("B5:B" & Derlig)
VisibleRows = MyRng.Cells.SpecialCells(xlCellTypeVisible).Cells.Count

For i = 1 To VisibleRows
If Sheets("données graph").Range("B" & i).Value = " " And Sheets("données graph").Range("B" & i + 1).Value = " " Then
Sheets("données graph").Range("B" & i).Rows.Hidden = True
End If
Next

End Sub

dans l'exemple que j'ai donné précédemment avec ce code ça marche :

Sub MasquerLignesVides()
Dim i As Long
Dim MyRng As Range
Dim VisibleRows As Long
Dim Derlig As Long

Derlig = Sheets("données graph").Range("B" & Rows.Count).End(xlUp).Row
Set MyRng = Sheets("données graph").Range("B5:B" & Derlig)
VisibleRows = MyRng.Cells.SpecialCells(xlCellTypeVisible).Cells.Count

For i = 1 To Derlig
If Sheets("données graph").Range("B" & i).Value = " " And Sheets("données graph").Range("B" & i + 1).Rows.Hidden = True And Sheets("données graph").Range("B" & i + 2).Value = " " Then
Sheets("données graph").Range("B" & i).Rows.Hidden = True
End If
Next
End Sub

Cependant étant donné que le nombre de lignes masquées entre chaque ligne vide visible est variable alors je ne peux pas appliquer ce code à tous les cas de figures.

il faut donc que mon compteur ne compte que les lignes visibles pour avoir un code indépendant du nombre de lignes cachées séparant deux lignes visibles vides :

For i = ? To ?
If Sheets("données graph").Range("B" & i).Value = " " And  And Sheets("données graph").Range("B" & i + 1).Value = " " Then
Sheets("données graph").Range("B" & i).Rows.Hidden = True
End If

comment faire? j'arrive pas a trouver de solution sur internet!


pour être encore plus claire il faudrait que ça compte comment ça dans mon for :

A1 visible i=1

A2 cachée

A3 cachée

A4 cachée

A5 visible i=2

A6 visible i=3

A7 cachée

A8 visible i=4

Bonjour

Ne sachant pas trop ce que veux faire essayes

Sub MasquerLignesVides()
Dim Cel As Range
Dim MyRng As Range
Dim Derlig As Long
Dim Ligne As Long

  With Sheets("données graph")
    Derlig = .Range("B" & Rows.Count).End(xlUp).Row
    Set MyRng = .Range("B5:B" & Derlig)
    For Each Cel In MyRng.SpecialCells(xlCellTypeVisible)
      If Cel = " " Then
        If Ligne > 0 Then
          .Rows(Ligne).Hidden = True
        End If
        Ligne = Cel.Row
      Else
        Ligne = 0
      End If
    Next Cel
  End With
End Sub

Si pas ça, joins un fichier avec ce que tu as et ce que tu veux

merci beaucoup c'est exactement ça!

Rechercher des sujets similaires à "macro compteur ligne visible filtre"