Formule pour masquer ligne vide VBA

Bonjour je souhaite masquer les lignes pour lesquels il n'y a pas de valeurs.

J'ai testé cela mais cela ne marche pas. 

Il s'agit d'un tableau fermé entre les lignes 39/54 et colonnes B/M

Sub masqueligne()
Lignedebut = 39
Lignefin = 54
Set MaPlage = Columns("B:M").Rows(i)
For i = Lignedebut To Lignefin
If Range(MaPlage).Value = "" Then
    Rows(i).Hidden = True
End If
Next i
End Sub
 

Merci de votre aide

6 réponses

  1. Bonjour,

    Remplace cette ligne de boucle par celle-ci (on part de la fin vers le début

    For i = Lignefin to Lignedebut Step -1
    0
    1. Ok merci, mais l'erreur vient de la ligne avec le Range (bug) et je ne vois pas pourquoi...

      0
      1. Teste ceci

        ​
        Sub masqueligne()
          Lignedebut = 39
          Lignefin = 54
            For i = Lignefin To Lignedebut Step -1
              If WorksheetFunction.CountA(Range(Cells(i, "B"), Cells(i, "M"))) = 0 Then
                Rows(i).Hidden = True
              End If
            Next i
        End Sub
        
        ​
        0
        1. il se peut que cela vienne du fait que j'ai plusieurs feuilles et que ce n'est pas la première. Je vais voir pour appliquer la fonction uniquement sur cette feuille. Si vous avez des idées je suis preneur

          0
          1. Finalement, je peux faire plus simple en attribuant juste une cellule en critère et non une plage

            Si cells(i, "N") = "" alors Masquer

            Peux tu m'aider à réécrire ce code ? merci

            0
          2. @CIF

            Re,

            Sub masqueligne()
              Lignedebut = 39
              Lignefin = 54
                For i = Lignefin To Lignedebut Step -1
                  If Cells(i, "N") = "" Then
                    Rows(i).Hidden = True
                  End If
                Next i
            End Sub
            0
          3. Contributeur
            @CIF

            Il-y a pas besoin de faire une boucle  pour résoudre ce problème !!!

            Pet-^tre daigner regarder ce qui a été proposé réponse 6/6 à 14:33H

            ce n'est pas difficile de faire cette manip sur plusieurs feuilles mais comme je suis pris pour un ...( au choix) je laisse les petits génies le faire

            0
        2. Contributeur

          Bonjour

          Sub Supprimer_si_vide()
              Dim Ligne As Long
              
              On Error Resume Next
              Ligne = Columns("B").Find("*", , , , , xlPrevious).Row
             Range("B2:B" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.hidden=true
          End Sub


          0
          1. Contributeur

            lire masquer au lieu de "supprimer"

            0