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 : Sélectionner tout - Visualiser dans une fenêtre à part
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