OVH Cloud OVH Cloud

macro lente

5 réponses
Avatar
J
Bonjour à tous
J'ai bricolé ce qui suit, pour masquer les lignes de la plage a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce
déroulement??

merci d'avance
cordialement
J@@
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************

5 réponses

Avatar
MichDenis
Bonsoir J@@

Essaie ceci : En adaptant le nom de la feuille selon celle de ton application.

'--------------------------
Sub MasqueLignesAvecBvide()

With Worksheets("Feuil1")
.Unprotect
.Range("a13:a101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------


Salutations!



"J@@" a écrit dans le message de news: %
Bonjour à tous
J'ai bricolé ce qui suit, pour masquer les lignes de la plage a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce
déroulement??

merci d'avance
cordialement
J@@
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************
Avatar
J
Re bonjour
après un coup d'oeil chez FS, voici un code bcp plus rapide.
est-il bien joli??
merci pour les avis
cordialement
J@@

'*************
Sub MasqueLignesAvecBvide2()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim lignedebut, lignefin
lignedebut = 13
lignefin = 101
ActiveSheet.Rows(lignedebut & ":" & lignefin).Hidden = True
ActiveSheet.Protect
End Sub
'************

"J@@" > J'ai bricolé ce qui suit, pour masquer les lignes de la plage
a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce
déroulement??
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************


Avatar
J
Bonjour MichDenis
et merci
Ton code fonctionne très bien, bien sûr :-))
(mon autre message évoque un code dérivé de FS qui me masque tout, bien sûr,
puisque j'ai oublié le test sur la cellule B :-(( )
@+
J@@

"MichDenis" <
Essaie ceci : En adaptant le nom de la feuille selon celle de ton
application.

'--------------------------
Sub MasqueLignesAvecBvide()

With Worksheets("Feuil1")
.Unprotect
.Range("a13:a101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------

"J@@" <> J'ai bricolé ce qui suit, pour masquer les lignes de la plage
a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce déroulement??
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************


Avatar
MichDenis
Bonsoir J@@,

Pour répondre à ta demande, j'aurais dû utiliser la colonne B au lieu de la colonne A, si je me réfère à ton code
initial.

'--------------------------
Sub MasqueLignesAvecBvide()

On Error Resume Next
With Worksheets("Feuil1")
.Unprotect
.Range("B13:B101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------


Salutations!




"J@@" a écrit dans le message de news: %
Bonjour MichDenis
et merci
Ton code fonctionne très bien, bien sûr :-))
(mon autre message évoque un code dérivé de FS qui me masque tout, bien sûr,
puisque j'ai oublié le test sur la cellule B :-(( )
@+
J@@

"MichDenis" <
Essaie ceci : En adaptant le nom de la feuille selon celle de ton
application.

'--------------------------
Sub MasqueLignesAvecBvide()

With Worksheets("Feuil1")
.Unprotect
.Range("a13:a101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------

"J@@" <> J'ai bricolé ce qui suit, pour masquer les lignes de la plage
a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce déroulement??
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************


Avatar
J
Encore merci :-))
J@@
"MichDenis" <> Pour répondre à ta demande, j'aurais dû utiliser la colonne B
au lieu de la colonne A, si je me réfère à ton code
initial.

'--------------------------
Sub MasqueLignesAvecBvide()

On Error Resume Next
With Worksheets("Feuil1")
.Unprotect
.Range("B13:B101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------

"J@@" <> Bonjour MichDenis
et merci
Ton code fonctionne très bien, bien sûr :-))
(mon autre message évoque un code dérivé de FS qui me masque tout, bien
sûr,
puisque j'ai oublié le test sur la cellule B :-(( )

"MichDenis" <
Essaie ceci : En adaptant le nom de la feuille selon celle de ton
application.

'--------------------------
Sub MasqueLignesAvecBvide()

With Worksheets("Feuil1")
.Unprotect
.Range("a13:a101").SpecialCells(xlCellTypeBlanks). _
EntireRow.Hidden = True
.Protect
End With

End Sub
'--------------------------

"J@@" <> J'ai bricolé ce qui suit, pour masquer les lignes de la plage
a13:a101 dont
la cellule B est vide.
Et bien, c'est "long" à se dérouler, près de 2 secondes. Comment
pourrait-on accélérer ce déroulement??
'*************
Sub MasqueLignesAvecBvide()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Dim plage As Range
Set plage = Range("a13:a101")
For Each ligne In plage.Rows
If ligne.Cells(1, 2).Value = Empty Then
'si la cellule de la colonne B est vide, la ligne est masquée
ligne.EntireRow.Hidden = True
End If
Next
ActiveSheet.Protect
End Sub
'**************