Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TN() As Variant 'déclare la variable TN (Tableau des Numéros)
Dim TV() As Variant 'déclare la variable TV (Tableaux des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim X As Integer 'déclare la variable X (incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set O = Worksheets("Feuil1") 'définit l'onglet O
O.Columns("U:U").ClearContents 'efface les données en colonne U de l'onglet O
DL = O.Cells(Application.Rows.Count, "P").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne P de l'onglet O
X = 1 'initialise la variable X
For I = 1 To DL 'boucle sur toutes les lignes I de 1 à DL
'si la cellule ligne I colone P de l'onglet O n'est pas vide, redimensionne le tableau des numéros TN,
'récupère la ligne I dans le tableau des numéros, incrémente X
If O.Cells(I, "P").Value <> "" Then ReDim Preserve TN(X): TN(X) = I: X = X + 1
Next I 'prochaine ligne de la boucle
For X = 1 To UBound(TN) 'boucle sur tous les éléments du tableau des numéros TN
'définit la cellule de destination DEST (recherche X entier dans la colonne T)
Set DEST = O.Columns("T:T").Find(X, , xlValues, xlWhole)
ReDim Preserve TV(X) 'redimensionne le tableau des valeurs TV(X)
TV(X) = O.Cells(TN(X), "P").CurrentRegion 'définit la tableau TV(X) (les cellules adjacentes à TN(X))
DEST.Resize(UBound(TV(X), 1), UBound(TV(X), 2)).Value = TV(X) 'renvoie le tableau TV(X) dans DEST redimensionnée
Next X 'prochain élément de la boucle
End Sub