Bonjour à tous,

Sujet maintes et maintes fois discuté je sais, ça fait deux jours que je fais des recherches et des tests mais je n'ai toujours pas réussi. Je veux qu'à l'ouverture de mon fichier excel "Liste des entrepreneurs.xls" ma macro s'exécute pour les 25-35 feuilles du classeur. Je veux supprimer les lignes où la date en colonne F est plus vieille qu'un an.

Cette macro fonctionne parfaitement si j'y vais feuille par feuille :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
37
38
39
40
41
42
43
Private Sub Worksheet_Activate()
 
Dim refdate
Dim i, imax
 
    refdate = Now()
    imax = Range("F65536").End(xlUp).Row
 
    For i = 5 To imax + 1
        If (refdate - (Range("F" & i).Value) > 365) And (Range("F" & i).Value <> "") Then
            Range("F" & i).EntireRow.Delete
            i = i - 1
            Else: Exit Sub
        End If
    Next i
 
End Sub
 
 
Mais cette macro placée dans Thisworkbook ne fonctionne pas et je ne comprend pas pourquoi :
 
Private Sub Workbook_Open()
 
Dim sht As Worksheet
Dim refdate
Dim i, imax
 
    refdate = Now()
    imax = Range("F65536").End(xlUp).Row
 
     For Each sht In Worksheets
  Debug.Print sht.Name
 
    For i = 5 To imax + 1
        If (refdate - (Range("F" & i).Value) > 365) And (Range("F" & i).Value <> "") Then
            Range("F" & i).EntireRow.Delete
            i = i - 1
            Else: Exit Sub
        End If
    Next i
Next
 
End Sub
Est-ce que quelqu'un peut m'aider?