Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Masquer lignes vides

  • Initiateur de la discussion Initiateur de la discussion Claudy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Claudy

XLDnaute Accro
Bonsoir
pour masquer des lignes vides , j'ai sorti la macro suivante:

Sub Masquer_lignes()


For Each cel In Range("A1:A30")
If cel.Value = "" Then
cel.EntireRow.Hidden = True
End If
Next
End Sub

Mais cela me semble assez long, sachant que je devrai travailler sur +/- 150 lignes.

merci d'avance pour vos lumières,
Claudy
 
Bonsoir Claudy,
En rajoutant quelques lignes, on va 100 fois plus vite :
VB:
Sub Masquer_lignes()
Application.ScreenUpdating = False
Application.Calculation = xlManual
T0 = Timer
    For Each cel In Range("A2:A300")
        If cel.Value = "" Then
            cel.EntireRow.Hidden = True
        End If
    Next
MsgBox Timer - T0
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sur mon PC sans les blocages, cela met 3.95s avec cela tombe à 0.03125s;
Essayez, mettez mes 2 premières lignes en commentaires, puis rééssayez en remettant dans l'état.
 
Sorry, i don't understand.
Je remettais les lignes dans leur état de départ, c'est pour ça qu'à la fin vous ne voyez pas de différences.🙂 . C'est ça qui vous posait problème ?
Le même sans remettre en état à la fin.
Mais obtenez vous un gain en vitesse ? 🙂
 

Pièces jointes

Bonsoir le fil, Claudy, sylvanu

Deux variantes
VB:
Sub Masquer_lignes_B()
Application.ScreenUpdating = False
Application.Calculation = xlManual
T0 = Timer
    For Each cel In Range("A2:A300")
      cel.EntireRow.Hidden = IsEmpty(cel)
    Next
MsgBox Timer - T0
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub MasquerDemasquer_lignes_C()
Application.ScreenUpdating = False
Application.Calculation = xlManual
T0 = Timer
On Error Resume Next
Range("A2:A300").SpecialCells(4).Rows.Hidden = Not Range("A2:A300").SpecialCells(4).Rows.Hidden
MsgBox Timer - T0
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
La dernière offre un petit bonus
Le 1ère exécution masque les lignes, la seconde exécution les démasque
Une macro deux en un , quoi 😉
 
Bonsoir Claudy, Bonsoir Staple,
Juste pour le plaisir de la polémique :
cel.EntireRow.Hidden = IsEmpty(cel) est plus long que cel.EntireRow.Hidden = True : 35.9ms pour IsEmpty contre 31.4ms pour True.
😉🙂
Bon allez, bonne nuit.
 
Re

Peut-être mais c'était juste pour le plaisir de la variante (et pour supprimer un If/End If)
Et quid de :
VB:
Sub Masquer_Ligne_D()
Application.ScreenUpdating = False
Application.Calculation = xlManual
T0 = Timer
    For Each cel In Range("A2:A300")
      cel.Rows.Hidden = cel = ""
    Next
MsgBox Timer - T0
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub Masquer_Ligne_E()
Application.ScreenUpdating = False
Application.Calculation = xlManual
T0 = Timer
    For Each cel In Range("A2:A300")
    If Not Len(cel) Then cel.Rows.Hidden = True
    Next
MsgBox Timer - T0
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
386
Réponses
3
Affichages
468
Réponses
3
Affichages
318
Réponses
3
Affichages
777
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…