Sub Transfert()
Dim DL%, T, Tout, i%, j%, k%, IndMax, NomFeuille$, NbL%, Fin%
Application.ScreenUpdating = False ' Ecran figé
DL = Range("F65500").End(xlUp).Row ' Dernière ligne occupée
T = Range("A20:K" & DL) ' On transfert lse données dans le tableau T
Titres = Range("A19:K19").Value ' On récupère les titres ( pour mettre dans les feuilles qui n'existent pas )
For i = 2 To UBound(T) ' Pour toutes les lignes
ReDim Tout(UBound(T), 10) ' On redimensionne le tableau de sortie
NbL = 0 ' Init du pointeur du tableau de sortie
Libellé = T(i, 6) ' On récupère le libellé
If Libellé <> "" Then ' Si non vide
For j = 1 To UBound(T) ' On parcourt toutes les lignes
If T(j, 6) = Libellé Then ' Si c'est le bon libellé
For k = 0 To 10 ' On tranefrt la ligne dans le tableau de sortie
Tout(NbL, k) = T(j, k + 1)
Next k
T(j, 6) = "" ' On efface le libellé du tableau d'entrée car déjà traité
NbL = NbL + 1 ' On incrémente l'indice du tableau de sortie
End If
Next j
' Ici, la matrice Tindice contient toutes les N) de lignes correspondant à Libellé
NomFeuille = Left(Libellé, 30) ' On ne prend que les 30 premiers caractères car nom onglet limité à 31
On Error Resume Next
If IsError(Sheets(NomFeuille).Range("A1")) Then ' Si Sheets(NomFeuille).Range("A1") c'est que NomFeuille n'existe pas
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = NomFeuille ' Alors on la créé
Sheets(NomFeuille).Range("A1:K1") = Titres ' On initialise la ligne des titres
End If
With Sheets(NomFeuille) ' On transfert le tableau de sortie dans la feuille concernée
Fin = 1 + .Range("F65500").End(xlUp).Row ' Première ligne disponible
.Range("A" & Fin).Resize(UBound(Tout, 1), 1 + UBound(Tout, 2)) = Tout ' Transfert tableau
End With
End If
Next i
Sheets("Feuil1").Select ' On revient sur la page initiale
Sheets("Feuil1").Range("A20:K" & DL).ClearContents ' On l'efface
Application.ScreenUpdating = True ' Ecran libéré
End Sub