Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Réduire le temps d'execution d'une macro !

1 réponse
Avatar
coco74
Bonjour à tous,

Es-t'il possible d'écrire autrement le code suivant afin d'en améliorer sa
durée d'execution ? (je suis débutant, pardon d'avance pour les programmeurs
qui vont lire mon code)

Private Sub Worksheet_Change(ByVal Target As Range)
'Exit Sub
If Not Intersect(Range("D3:D5"), Target) Is Nothing Then
Application.ScreenUpdating = False
With F2
Rows("10:538").EntireRow.Hidden = False
Set d = .Range("D10:D538")

For Each e In d
If e.Value = "" Then
e.EntireRow.Hidden = True
Else
e.EntireRow.Hidden = False
End If
Next
End With

Application.ScreenUpdating = True
End If

End Sub


Merci pour votre aide

1 réponse

Avatar
Daniel
Bonjour.
tu peux utiliser :
Range("D10:D538").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
si les cellules sont vides
ou tu peux retirer :
Else
e.EntireRow.Hidden = False
mais sur une petite plage de cellules, le gain doit être minime.
Cordialement.
Daniel
"coco74" a écrit dans le message de news:
%
Bonjour à tous,

Es-t'il possible d'écrire autrement le code suivant afin d'en améliorer sa
durée d'execution ? (je suis débutant, pardon d'avance pour les
programmeurs qui vont lire mon code)

Private Sub Worksheet_Change(ByVal Target As Range)
'Exit Sub
If Not Intersect(Range("D3:D5"), Target) Is Nothing Then
Application.ScreenUpdating = False
With F2
Rows("10:538").EntireRow.Hidden = False
Set d = .Range("D10:D538")

For Each e In d
If e.Value = "" Then
e.EntireRow.Hidden = True
Else
e.EntireRow.Hidden = False
End If
Next
End With

Application.ScreenUpdating = True
End If

End Sub


Merci pour votre aide