1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Option Explicit
Private Sub Worksheet_Activate()
Dim i As Long, lig As Long
Dim mask As Boolean
''''''Pour améliorer les temps de calcul, stocker les objets "Feuil" dans des variables :
Dim feui2 As Worksheet, feui4 As Worksheet
With ThisWorkbook
Set feui2 = .Sheets("Feuil2")
Set feui4 = .Sheets("Feuil4")
End With
With feui4
i = 5
For lig = 5 To feui2.Cells(Rows.Count, 4).End(xlUp).Row ''''''Equivalent à "For lig = 5 To .[D65000].End(3).Row" en plus performant, plus adaptatif et plus propre
If feui2.Cells(lig, 20).value = "X" Then
.Cells(i, 3).value = feui2.Cells(lig, 3).value
.Cells(i, 4).value = feui2.Cells(lig, 6).value
.Cells(i, 5).value = feui2.Cells(lig, 8).value
i = i + 1 ''''''Plus lisible de séparer cette instruction de la précédente
End If
Next lig
'Masquer les lignes vides
For i = 5 To 99 'Numéro des lignes concernées
mask = False 'On considère initialement que la ligne doit être visible
If .Cells(i, 3).value = "" Then mask = True 'Test si cellule Ci est vide, si c'est le cas, on masquera la ligne
.Rows(i).EntireRow.Hidden = mask 'Masquer ou non la ligne selon le test précédent
Next i
End With
End Sub |
Partager