Sub Masquer_Lignes_Videsmandats()
Dim O As Object 'déclare la variable O (Onglet)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim I As Byte 'déclare la variable I (Incrément)
Dim TC1 As String 'déclare la variable TC1 (Texte Cherché 1)
Dim TC2 As String 'déclare la variable TC2 (Texte Cherché 2)
Dim RD As Range 'déclare la variable RD (Recherche de Départ)
Dim RF As Range 'déclare la variable RF (Recherche de Fin)
Dim CD As Range 'déclare la variable CD (Cellule de Départ)
Dim CF As Range 'déclare la variable CF (Cellule de Fin)
Dim PL As Range 'déclare la variable PL (PLage)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set O = ActiveSheet 'définit l'onglet O
COL = IIf(O.Name = "Formulaire budgétaire", 5, 6) 'définit la colonne COL
For I = 1 To 4 'boucles sur les 4 recherches
Select Case I 'agit en fonction de l'élément I de la boucle
Case 1 'cas I = 1
TC1 = "Acquisitions équipements matériels" 'définit le texte recherché 1 TC1
TC2 = "Sous-total acquisition matériels" 'définit le texte recherché 2 TC2
Case 2 'cas I = 2
TC1 = "Acquisition de contrat entretien matériel" 'définit le texte recherché 1 TC1
TC2 = "Sous-total acquisition de contrat entretien matériels" 'définit le texte recherché 2 TC2
Case 3 'cas I = 3
TC1 = "Acquisition de licences/logiciels" 'définit le texte recherché 1 TC1
TC2 = "Sous-total acquisition licences/logiciels" 'définit le texte recherché 2 TC2
Case 4 'cas I = 4
TC1 = "Acquisition de contrat entretien logiciels" 'définit le texte recherché 1 TC1
TC2 = "Sous-total acquisition contrat entretien logiciels" 'définit le texte recherché 2 TC2
End Select 'fin de l'action en fonction de l'élément I de la boucle
Set RD = O.Cells.Find(TC1, , xlValues, xlWhole) 'definit recherche de départ RD
'si il existe au moins une occurrence trouvée, définit la cellule de départ CD
If Not RD Is Nothing Then Set CD = O.Cells(RD.Row + 2, COL)
Set RF = O.Cells.Find(TC2, , xlValues, xlWhole) 'definit recherche de fin RF
'si il existe au moins une occurrence trouvée, définit la cellule de fin CF
If Not RF Is Nothing Then Set CF = O.Cells(RF.Row - 1, COL)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set PL = O.Range(CD, CF) 'définit la plage PL (génère une erreur si CD et CF ne sont pas définies)
If Err <> 0 Then Err.Clear: Exit Sub 'si une erreur a été générée, efface l'erreur, sort de la procédure
On Error GoTo 0 'annule la gestion des erreurs
Call ProcMasquer(PL) 'lance la procédure [ProcMasquer] avec l'argument PL
Next I 'prochaine recherche de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub