Sub test()
Dim t() As Variant, i As Integer, j As Integer
' Redimension du tableau 2 D
' Ligne du tableau de la premiére à la derniére avec
' 1 To ActiveSheet.Cells(ActiveSheet.Cells(65535, 1).End(xlUp).Row, 1).Row - 1
' les colones / juste 2 colonne avec
' 1 To 2
ReDim t(1 To ActiveSheet.Cells(ActiveSheet.Cells(65535, 1).End(xlUp).Row, 1).Row - 1, 1 To 2)
' For Boucle sur toutes les lignes du tableau
For i = LBound(t, 1) To UBound(t, 1)
' Découpe la chaine de caractaire de la cellule A2
' Stocke dans la case du tableau / Ligne (1 = i) colonne 2 pour t(i, 2)
t(i, 2) = Split(ActiveSheet.Cells(i + 1, 1), " ")
' donc la case t(i, 2) contient le tableau split
' récupération de la premiére case se tableau = 1 (de la cellule A1 / "1 TF1")
' la valeur 1 se trouve dans un tableau qui lui même est dans un tableau
' t(i, 2) = cette case contient un tableau de 2 case / Case 0 = 1 et Case 1 = TF1
' Donc le tableau initial t à la case = t(i,1) qui est vide
' Ont stocke la valeur 1 dans cette case
' t(i,1) = 1 est est donc comme deviné le tableau de split dans la case du tableau ligne 1 colonne 2
' Voila la premiere case de notre tableau est remplis
' t(i,1) = "elle contient la valeur 1 à présent)
t(i, 1) = t(i, 2)(0)
' Condition si le tableau générer avec le split contient plus de 2 cases !
If UBound(t(i, 2)) > 2 Then
' Se cas est particulier car la chaine contient plusieurs espace est génére plusieur découpage
' exemple pour la cellule A4 soit la chaine "207 Science & Vie TV"
' le split va générer 5 case réspectivement / Case 0 puis 1 et 2 et 3 et 4 et 5
' Se tableau est ranger dans la case du tableau t soit ligne i = 3 de la colonne 2
' ********** L'astuce pour évité la boucle *********************
' t(i,3) précedement rempli contient 207
' donc je fait le découpage avec la chaine 207 qui est équivalent a t(i,3)
' le découpage de se tableau est obtenu avec 2 case donc avec se fameux découpage
' Split(ActiveSheet.Cells(i + 1, 1), t(i, 1))
' Alors la case 0 de se tableau serat donc vide car avant 207 (Il n'y a rien) C'est le pivot
' est case 1 de l'autre coté de 207 il y a la chaine restante
' Donc je choisi la case 1 ont
' pour le reste de la chaine soit Split(ActiveSheet.Cells(i + 1, 1), t(i, 1))(1)
t(i, 2) = Split(ActiveSheet.Cells(i + 1, 1), t(i, 1))(1)
' t(i, 2) = "voila la case du tableau t ligne " colone 2 contient la chaine "Science & Vie TV"
' donc idem j'écrase le tableau générer précedement avec le split qui a remplis cette case
' par la nouvelle valeur (chaine de caractaire décrite si dessus)
Else
' Le tableau générer par le split cotient 2 case / La case 0 (pour une valeur) et la case 1 (pour une autres valeur)
' Alors dans cette case vu plus haut de se fameux tableau générer par le split qui est stocké dans la case
' du tableau t de la ligne i = 1 et de sa colone 2 pour t(i, 2)
' Donc la valeur de la case du tableau générer par le split qui a deux cases il est simple de récupérer la
' valeur de la deuxieme case soit la case 1 qui contient TF1
' J'écrase le tableau de split et je remplace par la la valeur de la case 2 du split / ont deviné la case 1
' t(i, 2) = "Voila à présent la case de se tableau t donc ligne i = 1 de la colonne 1 contient a présent TF1"
t(i, 2) = t(i, 2)(1)
End If
Next i
' Comme le tableau est remplis il ne reste plus cas le coller sur la feuille avec cette fonction
' choix de la cellule ou sera coller le tableau ici ActiveSheet.Cells(2, 3) = Cellule C2
' Resize(UBound(t, 1), UBound(t, 2)
' Resize definit la taille reserver dans la feuille pour coller le resultat de la variable tableau t
' UBound(t, 1) = Nombre de ligne 1 à 3
' UBound(t, 2) = Nombre de colonne 1 à 2
' t = c'est l'ensemble de tous le tableau a coller dans la feuille avec cette instruction décrite ci-dessus
ActiveSheet.Cells(2, 3).Resize(UBound(t, 1), UBound(t, 2)) = t
End Sub