bonjour
@i20100
edit : correction de 32767 en 65535 suite au message de Jean-Eric (voir ci-dessous), merci à lui.
j'ai remarqué à plusieurs reprises que application.transpose avait du mal à gérer les tableaux dont le nombre de lignes ou de colonnes est supérieur à 65535 (nombre max pour une variable de type entier).
voici donc une correction possible du code.
Sub test()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim col As Integer, y As Integer
Dim lig As Long, i As Long, a As Long, ligneresultat
Dim var(65535, 2), t
Set sh1 = Sheets("Data")
Set sh2 = Sheets("resultats")
col = sh1.Cells(1, Columns.Count).End(xlToLeft).Column
lig = sh1.Cells(Rows.Count, 1).End(xlUp).Row
t = sh1.Cells(1, 1).Resize(lig, col)
a = 0
ligneresultat = 2
For i = 2 To lig
For y = 2 To col
If a = 65535 Then 'tableau rempli on transfère son contenu sur la feuille
sh2.Cells(ligneresultat, 1).Resize(a, 3) = var
ligneresultat = ligneresultat + a
a = 0
End If
var(a, 0) = t(1, y)
var(a, 1) = t(i, 1)
var(a, 2) = t(i, y)
a = a + 1
Next y
Next i
If a <> 0 Then 'on transfère le résidu du tableau
sh2.Cells(ligneresultat, 1).Resize(a, 3) = var
End If
End Sub
@Nicolas07600
l'algorithme
tant qu'il y a une ligne non vide
tant qu'il y a une colonne non vide
ajouter une ligne résultat qui contient la date (ligne en cours, colonne 1), le nom de l'action (ligne 1, colonne en cours), cours de l'action (ligne en cours, colonne en cours)
le code VBA ci-dessus est basé sur cet algorithme mais inclut des optimisations de performance.