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
Partager