Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de Variable tableau

2 réponses
Avatar
syl.news2
Bonjour,

J'utilise une variable tableau dans laquelle je place une partie d'une
feuille de calcul, soit une s=E9lection...
tblVariable1() =3D Selection
Par la suite des op=E9rations sont faites sur le contenu de cette
variable tableau et le r=E9sultat est stock=E9 dans une deuxi=E8me variable
tableau. Je ne mettrai pas le code ici car non pertinent, si je fais
un "Debug.Print tblVariable1, tblVariable2" les donn=E9es ressemblent =E0
ceci...
2008-12-10 01:11:59 2008-12-10 01:15:00
2008-12-10 01:26:23 2008-12-10 01:30:00
Maintenant j'en viens au probl=E8me... Si je colle le contenu de ces
variables dans la feuille =E7a ne fonctionne pas avec la variable
tblVariable2.
Ex:
Range("A20:A22") =3D tblVariable1, colle le contenu de la variable dans
la feuille
Range("A20:A22") =3D tblVariable2, ne colle rien, m=EAme si le d=E9bug.prin=
t
d=E9montre que la variable contient les donn=E9es requises.
Les variables ont =E9t=E9 initialement d=E9clar=E9s comme variant... Dim
tblVariable1() As Variant
Dim tblVariable2() As Variant

Merci.

2 réponses

Avatar
michdenis
Fais ce petit exercice : les valeurs du tableau S que je transfère
au tableau T sont recopiées en G

'------------------------------
Sub test()
Dim T() As Variant, S() As Variant
S = Range("A1:C3") ' évidemment cette plage contient des données
T = S
Range("G1").Resize(UBound(T, 1), UBound(T, 2)) = T
End Sub
'------------------------------

Conclusion, l'explication de ta problématique n'est pas complète
comment transfères-tu tes données d'un tableau à l'autre ?



a écrit dans le message de news:

Bonjour,

J'utilise une variable tableau dans laquelle je place une partie d'une
feuille de calcul, soit une sélection...
tblVariable1() = Selection
Par la suite des opérations sont faites sur le contenu de cette
variable tableau et le résultat est stocké dans une deuxième variable
tableau. Je ne mettrai pas le code ici car non pertinent, si je fais
un "Debug.Print tblVariable1, tblVariable2" les données ressemblent à
ceci...
2008-12-10 01:11:59 2008-12-10 01:15:00
2008-12-10 01:26:23 2008-12-10 01:30:00
Maintenant j'en viens au problème... Si je colle le contenu de ces
variables dans la feuille ça ne fonctionne pas avec la variable
tblVariable2.
Ex:
Range("A20:A22") = tblVariable1, colle le contenu de la variable dans
la feuille
Range("A20:A22") = tblVariable2, ne colle rien, même si le débug.print
démontre que la variable contient les données requises.
Les variables ont été initialement déclarés comme variant... Dim
tblVariable1() As Variant
Dim tblVariable2() As Variant

Merci.
Avatar
syl.news2
On 30 déc, 09:22, "michdenis" wrote:
Fais ce petit exercice : les valeurs du tableau S que je transfère
au tableau T sont recopiées en G

'------------------------------
Sub test()
Dim T() As Variant, S() As Variant
S = Range("A1:C3") ' évidemment cette plage contient des données
T = S
Range("G1").Resize(UBound(T, 1), UBound(T, 2)) = T
End Sub
'------------------------------

Conclusion, l'explication de ta problématique n'est pas complète
comment transfères-tu tes données d'un tableau à l'autre ?



Ton astuce as fonctionnée!
En utilisant la fonction resize avec 2 colonnes, le contenu de ma
variable tableau se retrouvait dans la deuxième colonne. Par la suite
en inscrivant "Option Base 1", tout est entré dans l'ordre. Il semble
que la ligne de code "tblVariable1() = Selection" ait donné à cette
variable la capacité de se copier dans la première colonne de la
feuille, ce qui était refusé à la variable tblVariable2().
Je te fournit quand même le code qui transfère les données d'un
tableau à l'autre.

ReDim Preserve tblVariable1(Selection.Count, 1)
ReDim Preserve tblVariable2(Selection.Count, 1)
tblVariable1() = Selection
c = 1
For c = 1 To Selection.Count
Select Case Minute(tblVariable1(c, 1))
Case 53 To 59: tblVariable2(c, 1) = Round(tblVariable1(c,
1)) + (Hour(tblVariable1(c, 1)) / 24) + (4 / 96)
Case 0 To 7: tblVariable2(c, 1) = Round(tblVariable1(c,
1)) + (Hour(tblVariable1(c, 1)) / 24) + 0
Case 8 To 22: tblVariable2(c, 1) = Round(tblVariable1(c,
1)) + (Hour(tblVariable1(c, 1)) / 24) + (1 / 96)
Case 23 To 37: tblVariable2(c, 1) = Round(tblVariable1(c,
1)) + (Hour(tblVariable1(c, 1)) / 24) + (2 / 96)
Case 38 To 52: tblVariable2(c, 1) = Round(tblVariable1(c,
1)) + (Hour(tblVariable1(c, 1)) / 24) + (3 / 96)
End Select
Debug.Print tblVariable1(c, 1), tblVariable2(c, 1)
Next c


Merci beaucoup!