Bonsoir Bat,
tu a écrit :
pourrais-tu me commenter le code pour que je comprenne mieux ?
voici l'explication du code VBA :
With ActiveSheet
.. End With
: avec la feuille active
If .Name <> "QUANTITE_DPGF" And .Name <> "PTHT_DPGF" Then Exit Sub
: on sort de la sub si le nom est ni "QUANTITE_DPGF", ni "PTHT_DPGF" car c'est seulement sur ces 2 feuilles que la sub doit être exécutée.
Dim lg1&, lg2&
: idem que Dim lg1 As Long, lg2 As Long
: 2 variables de type entier Long
lg1 et lg2 sont pour 2 n° de ligne, car on va supprimer des lignes de lg1+1 à lg2.
Application.ScreenUpdating = 0
: désactive la mise à jour de l'écran ➯ l'exécution du code est plus rapide
lg2 = Cells(Rows.Count, 3).End(3)(2).Row
: idem que :
lg2 = Cells(Rows.Count, "C").End(xlUp).Row + 1
donc pour la feuille active, lg2 est le n° de la dernière ligne utilisée, selon la colonne C, avec ajout de 1 ;
cet ajout de 1 est uniquement car y'a une fusion des cellules C56:E57 ; sans ajout de 1 : retour 56 ;
donc la ligne 57 n'aurait pas été supprimée !
lg1 = Cells(Rows.Count, 2).End(3).Row
: idem que :
lg1 = Cells(Rows.Count, "B").End(xlUp).Row
donc pour la feuille active, lg1 est le n° de la dernière ligne utilisée, selon la colonne B : retour 46
on va donc chercher "DESCRIPTION DES OUVRAGES" depuis cette ligne 46 vers le haut ; note que si on fait cette recherche depuis la ligne 3 vers le bas, on tombe sur le même texte en B4, et faudrait pas supprimer toutes les lignes qui sont en dessous !
Do While Cells(lg1, 2) <> "DESCRIPTION DES OUVRAGES"
.. Loop
: on boucle tant qu'on ne trouve pas le texte "DESCRIPTION DES OUVRAGES" ; lg1 = lg1 - 1
; c'est car lg1 est diminué de 1 que la recherche se fait vers le haut :
une ligne plus haut à chaque tour de boucle.
If lg1 = 10 Then Exit Sub
: sécurité pour éviter une boucle infinie si le texte n'est pas trouvé : donc si le texte est absent, on sort de la sub si on atteint la ligne 10 (ce choix est arbitraire, tu peut mettre une autre butée selon ta préférence).
Rows(lg1 + 1 & ":" & lg2).Delete
: suppression des lignes lg1+1 à lg2 ; car faut pas supprimer le texte trouvé
"DESCRIPTION DES OUVRAGES".
dhany