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. 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
  2. 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
  3. 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. Ok merci, mais l'erreur vient de la ligne avec le Range (bug) et je ne vois pas pourquoi...

      0
      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