Bonjour à touts et à toutes,

j'ai la fonction suivante qui permet de retrouver et de supprimer des lignes.
Cette fonction fait partie d'une macro qui permet de mettre un forme un fichier de données brutes suivant une certaine forme.

voici le code de la fonction:

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
'fonction retournant les cellules (de la plage passée en paramètre) dans lesquelles on trouve la valeur/formule passée en paramètre
Private Function find_range(find_item As Variant, search_range As Range, Optional look_in As Variant, Optional look_at As Variant, Optional match_case As Boolean) As Range
    'si les arguments optionnels ne sont pas renseignés
    Dim c As Range
    If IsMissing(look_in) Then look_in = xlValues 'xlFormulas
    If IsMissing(look_at) Then look_at = xlPart   'xlWhole
    If IsMissing(match_case) Then match_case = False
    'corps de la fonction
    With search_range
        Set c = .Find(What:=find_item, LookIn:=look_in, LookAt:=look_at, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=match_case, SearchFormat:=False)
        If Not c Is Nothing Then
            Set find_range = c
            firstAddress = c.Address
            Do
                Set find_range = Union(find_range, c)
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
End Function

et voici la boucle for qui appelle cette fonction:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
For i_annee = annee_en_cours - 2001 To 5 Step -1
        find_range(2000 + i_annee, Columns(col_max - 7)).EntireRow.Delete
    Next

Merci d'avance poour votre aide

PS: le message d'erreur est Run-time erreur 91: Object Variable or With bolck variable not set.
J'avais eu auparavant ce problème il y a un mois de cela, mais j'avai pu le résoudre en inversant le déroulement de la boucle qui était de la forme:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
For i_annee = 5 To annee_en_cours - 2001
      find_range(2000 + i_annee, Columns(col_max - 7)).EntireRow.Delete
Next