Formule pour masquer ligne vide VBA

CIF -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -

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

A voir également:

6 réponses

M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 

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
CIF
 

Ok merci, mais l'erreur vient de la ligne avec le Range (bug) et je ne vois pas pourquoi...

0
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 

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
CIF
 

La fonction n'est plus en erreur mais ca ne masque pas les lignes

0
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285
 

Désolé,

moi c'est masqué

https://www.cjoint.com/c/LHwlcav8v7C

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CIF
 

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
CIF
 

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
M-12 Messages postés 1332 Date d'inscription   Statut Membre Dernière intervention   285 > 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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > 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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 

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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 

lire masquer au lieu de "supprimer"

0