Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim T, Tsortie, TabloTransfert, DL%, DLS%, N%, L%
TabloTransfert = Array(0, 8, 7, 1, 2, 3, 4, 5, 6, 9) ' Array de permutation de champs tableau de sortie vs tableau entrée.
ReDim Tsortie(1 To 10000, 1 To 9) ' Tableau de sortie, gde taille par défaut
T = [TbS] ' Transfert tableau dans array
DLS = 0 ' Init N° ligne écriture dans array de sortie Tsortie
For DL = 1 To UBound(T) ' Pour toutes les lignes du tableau
DLS = DLS + 1 ' On incrémente la ligne d'écriture de Tsortie
T(DL, 8) = T(DL, 8) & Chr(10) ' On ajoute un chr(10) à la fin, on en a donc toujours au moins 1
T7chr10 = Split(T(DL, 7), Chr(10)) ' On sépare les champs de N° de dossier
T8chr10 = Split(T(DL, 8), Chr(10)) ' On sépare les champs de ID
For N = 0 To UBound(T8chr10) - 1 ' Pour tous les ID ( -1 ligne car la dernière est vide )
For L = 1 To 9 ' Transfert ligne avec permutation données
Tsortie(DLS, L) = T(DL, TabloTransfert(L))
Next L
Tsortie(DLS, 1) = T8chr10(N) ' Inscription ID
Tsortie(DLS, 2) = T7chr10(N) ' Inscription N° dossier
DLS = DLS + 1 ' Procheine ligne
Next N
DLS = DLS - 1 ' Quand on sort on supprime la ligne vide du dernier for
Next DL
[TbId].ListObject.DataBodyRange.Delete ' On efface le tableau résultat
[TbId].Item(1, 1).Resize(DLS, UBound(Tsortie, 2)) = Tsortie ' On écrit le tableau de sortie
End Sub