Option Explicit
Sub SupprimerLignesOngletsSupprimes()
' Déclare le classeur actif
Dim wb As Workbook
Set wb = ThisWorkbook ' Utilise le classeur actif
' Déclare la feuille cible où se trouve le tableau
Dim targetSheet As Worksheet
Set targetSheet = wb.Sheets("Synthese") ' Remplace "Synthese" par le nom de ta feuille
targetSheet.Activate
' Déverrouille la feuille pour permettre les modifications
targetSheet.Unprotect
' Déclare et assigne le tableau structuré de la feuille cible
Dim tableau As ListObject
Set tableau = targetSheet.ListObjects("Tableau12") ' Remplace "Tableau12" par le nom de ton tableau
' Déclare la plage contenant les données de la première colonne du tableau
Dim Plg As Range
Set Plg = tableau.ListColumns(1).DataBodyRange
' Déclare la variable pour la boucle et la collection pour stocker les lignes à supprimer
Dim Rng As Range
Dim cln As Collection
Set cln = New Collection ' Initialise une nouvelle collection pour les lignes à supprimer
' Déclare une variable pour le nom de la feuille
Dim wsName As Variant
' Parcours chaque cellule de la plage définie
For Each Rng In Plg
Rng.Select ' Sélectionne la cellule courante
On Error Resume Next ' Ignore les erreurs si l'onglet n'existe pas
Set wsName = Worksheets(CStr(Split(Rng.Value, " ")(0))) ' Essaye d'obtenir la feuille en fonction du nom trouvé
' Si une erreur est détectée (feuille non trouvée), ajoute la ligne à la collection
If Err Then
'Debug.Print Rng.Value ' Affiche la valeur de la cellule dans la fenêtre d'exécution
'Debug.Print Rng.Row ' Affiche le numéro de la ligne de la cellule
cln.Add Item:=Rng.Row, Key:=CStr(Split(Rng.Value, " ")(0)) ' Ajoute la ligne à la collection
End If
On Error GoTo 0 ' Réinitialise la gestion d'erreurs à l'état normal
Next Rng
' Parcours inversé de la collection pour supprimer les lignes
Dim i As Long
For i = cln.Count To 1 Step -1
'Debug.Print cln(i) ' Affiche les éléments dans l'ordre inverse
targetSheet.Rows(CLng(cln(i))).Delete ' Supprime la ligne correspondante
Next i
' Réactive la protection de la feuille
targetSheet.Protect
' Décharge les variables utilisées
Set wb = Nothing
Set targetSheet = Nothing
Set tableau = Nothing
Set Plg = Nothing
Set Rng = Nothing
Set wsName = Nothing
Set cln = Nothing ' Décharge la collection
i = Empty
End Sub