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
Partager