optimisation code

perdinch

XLDnaute Occasionnel
bonjour,

je souhaite optimiser ce code dont l'objectif est de masquer des lignes selon un critère.
Ce code fonctionne mais je le trouve relativement long(10 secondes) pour une cinquantaine de ligne à balayer.

For i = 3 To 50
On Error Resume Next
If Cells(i, 9) + Cells(i, 14) + Cells(i, 18) = 0 Then Rows(i).EntireRow.Hidden = True
Next i

Merci de vos suggestions
 

Efgé

XLDnaute Barbatruc
Re : optimisation code

Bonjour perdinch

Plus de ligne, lmais moins de temps :)

VB:
Sub test()
Dim i&, R As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next 'inutile de le mettre dans la boucle. Une fois suffit
For i = 3 To 50
    If Cells(i, 9) + Cells(i, 14) + Cells(i, 18) = 0 Then
        If Not R Is Nothing Then
            Set R = Union(R, Rows(i))
        Else
            Set R = Rows(i)
        End If
    End If
Next i
If Not R Is Nothing Then R.EntireRow.Hidden = True
Application.Calculation = xlCalculationAutomatic
End Sub
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : optimisation code

Re
Comprends pas :
VB:
Sub Test()
Dim i&, R As Range, Test&
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next 'inutile de le mettre dans la boucle. Une fois suffit
For i = 3 To 50
    Test = Cells(i, 9) + Cells(i, 14) + Cells(i, 18)
    If Test = 0 Then
        If Not R Is Nothing Then
            Set R = Union(R, Rows(i))
        Else
            Set R = Rows(i)
        End If
    End If
Next i
If Not R Is Nothing Then R.EntireRow.Hidden = True
Application.Calculation = xlCalculationAutomatic
End Sub
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 942
Membres
103 989
dernier inscrit
jralonso