OVH Cloud OVH Cloud

Limitation du nombre de caractères lors du transfert d'un Arraty dans un tableau

15 réponses
Avatar
FdeCourt
Bonjour,

Pourquoi Excel limite t-il le nombre de caract=E8res qui peut =EAtre
transf=E9r=E9 d'un array vers un tableau.

Par exemple :

Dim x(1 To 2)

For i =3D 1 To 2
x(i) =3D String(912, "x")
Next
[A1:A2] =3D x

me renvoi une erreur 1004
alors que si je met 911 x, cela passe.

Merci pour votre aide.

F.

5 réponses

1 2
Avatar
JB
Bonjour,
Excel 2002 XP

Sub essai()
Dim x(1 To 2)
For i = 1 To 2
x(i) = String(80000000, "x")
Next
y = x(1)
MsgBox Len(y)
MsgBox Right(y, 1)
End Sub

JB



On 28 mar, 11:10, FdeCourt wrote:
Bonjour,

Pourquoi Excel limite t-il le nombre de caractères qui peut être
transféré d'un array vers un tableau.

Par exemple :

Dim x(1 To 2)

For i = 1 To 2
    x(i) = String(912, "x")
Next
[A1:A2] = x

me renvoi une erreur 1004
alors que si je met 911 x, cela passe.

Merci pour votre aide.

F.


Avatar
Modeste
Bonsour® JB avec ferveur ;o))) vous nous disiez :

Sub essai()
Dim x(1 To 2)
For i = 1 To 2
x(i) = String(80000000, "x")
Next
y = x(1)
MsgBox Len(y)
MsgBox Right(y, 1)
End Sub


oui JB ;o)))

cependant la question était :
Pourquoi Excel limite t-il le nombre de caractères qui peut être
transféré d'un array vers un tableau.
[A1:A2] = x
me renvoi une erreur 1004
;o)))




--
--
@+
;o)))


Avatar
JB
Bonsoir

La limite est celle de la longueur maxi que l'on peut stocker dans une
cellule (32767).

JB
Bonsour® JB  avec ferveur  ;o))) vous nous disiez :

Sub essai()
Dim x(1 To 2)
For i = 1 To 2
    x(i) = String(80000000, "x")
Next
y = x(1)
MsgBox Len(y)
MsgBox Right(y, 1)
End Sub


oui JB ;o)))

 cependant la question était  :>> Pourquoi Excel limite t-il le nomb re de caractères qui peut être
transféré d'un array vers un tableau.
[A1:A2] = x
me renvoi une erreur 1004



;o)))

--
--
@+
;o)))




Avatar
Modeste
Bonsour® JB avec ferveur ;o))) vous nous disiez :

La limite est celle de la longueur maxi que l'on peut stocker dans une
cellule (32767).
oui JB je le pensais aussi ....

je commence à avoir des doutes ????
la question au départ était plutot au sujet du plantage concerant le deversement
d'un array dans une plage de cellule

la macro ci-dessous plante chez moi dans la deuxieme boucle
65509 caracteres dans l'array x(1)

Sub test()
Dim x(1 To 2)
[A3] = 65505
For i = 1 To 2
x(i) = String([A3], "i") & "fini"
Next
MsgBox "Nb car " & Len(x(1)) & " : " & Right(x(1), 5), , "dans l'array"
[A1:A2] = x
MsgBox "Nb car " & Len([A1]) & " : " & Right([A1], 5), , "dans la feuille"

[A3] = 65506
For i = 1 To 2
x(i) = String([A3], "i") & "fini"
Next
MsgBox "Nb car " & Len(x(1)) & " : " & Right(x(1), 5), , "dans l'array"
'------------------------ plantage là !!!!
[A1:A2] = x
MsgBox "Nb car " & Len([A1]) & " : " & Right([A1], 5), , "dans la feuille"

End Sub





--
--
@+
;o)))

Avatar
JB
On récupère seulement 32767 caractères dans A1 et A2

Sub essai()
Dim x(1 To 2)
For i = 1 To 2
x(i) = String(35000, "x")
Next
[A1] = x(1)
[A2] = x(2)
End Sub

JB

On 28 mar, 21:36, "Modeste" wrote:
Bonsour® JB  avec ferveur  ;o))) vous nous disiez :

La limite est celle de la longueur maxi que l'on peut stocker dans une
cellule (32767).


oui JB je le pensais aussi ....
je commence à avoir des doutes ????
la question au départ était plutot au sujet du plantage concerant le d eversement
d'un array dans une plage de cellule

la macro ci-dessous plante chez moi dans la deuxieme boucle
65509 caracteres dans l'array x(1)

Sub test()
    Dim x(1 To 2)
[A3] = 65505
    For i = 1 To 2
        x(i) = String([A3], "i") & "fini"
    Next
    MsgBox "Nb car " & Len(x(1)) & " : " & Right(x(1), 5), , "dans l'a rray"
[A1:A2] = x
    MsgBox "Nb car " & Len([A1]) & " : " & Right([A1], 5), , "dans la feuille"

[A3] = 65506
    For i = 1 To 2
        x(i) = String([A3], "i") & "fini"
    Next
    MsgBox "Nb car " & Len(x(1)) & " : " & Right(x(1), 5), , "dans l'a rray"
'------------------------ plantage là !!!!
[A1:A2] = x
    MsgBox "Nb car " & Len([A1]) & " : " & Right([A1], 5), , "dans la feuille"

End Sub

--
--
@+
;o)))



1 2