Fonction transpose ne fonctionne qu'avec tableau déclaré en STRING
bonjour,
je traite des données organisées en colonnes et dans lesquelles j'ai besoin de pouvoir modifier des valeurs et/ou ajouter des lignes.
Pour accélérer le traitement je charge les données de la feuille dans une variable tableau en la transposant pour pouvoir ajouter des données avec Redim Preserve.
Une fois les données traitées j'enregistre à nouveau mes données sur la feuille en transposant la variable tableau.
Et là j'ai un souci.
Si je déclare ma variable en VARIANT j'ai l'erreur "incompatibilité de type" sur la fonction transpose.
Si je déclare ma variable en STRING pas d'erreur (sauf si j'ai plus de 65536 mais c'est un autre sujet).
Voici un code de test utilisé avec une feuille source "DATA" de 17 colonnes et un nombre variable de lignes.
le résultat est copié dans une feuille "DATA (2)".
comme j'ai des chiffres et des dates à traiter, surtout les dates je préfère rester en VARIANT.
Est-ce une limitation de la fonction transpose?
Est-ce que j'ai oublié un paramétrage quelque part ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
Sub test2()
Dim data_test2() As Variant 'avec variant ça plante un peu plus loin
Nbcol = 17
Nline = 1
With ThisWorkbook.Sheets("DATA")
While .Cells(Nline, 1) <> ""
On Error Resume Next
Nbl = UBound(data_test2, 2)
On Error GoTo 0
If IsEmpty(Nbl) Then Nbl = 1 Else Nbl = Nbl + 1
ReDim Preserve data_test2(Nbcol, Nbl)
For i = 1 To Nbcol
data_test2(i, Nbl) = .Cells(Nline, i).Value
Next i
Nline = Nline + 1
Wend
End With
With ThisWorkbook.Sheets("DATA (2)")
.Range(.Cells(1, 1), .Cells(UBound(data_test2, 2), Nbcol)) = Application.Transpose(data_test2) 'c'est ici que ça plante
End With
End Sub |