Formule pour masquer ligne vide VBA

Fermé
CIF - 22 août 2022 à 10:48
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 22 août 2022 à 19:10

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 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 283
22 août 2022 à 10:52

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

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 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 283
Modifié le 22 août 2022 à 11:35

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

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

0
M-12 Messages postés 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 283
22 août 2022 à 13:02

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

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

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 1331 Date d'inscription lundi 22 septembre 2008 Statut Membre Dernière intervention 8 avril 2023 283 > CIF
22 août 2022 à 18:02

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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311 > CIF
22 août 2022 à 19:10

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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
22 août 2022 à 14:33

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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 311
22 août 2022 à 14:36

lire masquer au lieu de "supprimer"

0