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

Passer outre la limitation à 255 caractères des chaînes de caractères

3 réponses
Avatar
GL
Bonjour,

Je rencontre le problème suivant, pour les formules
matricielles : si j'affecte à une case d'un tableau-Variant
une chaîne de plus de 255 caractères, la fonction
renvoie indifféremment l'erreur #VALEUR!


Exemple :
' Fonction matricielle toute simplette
Function LongueChaine() as Variant
Dim result(1 To 2, 1 To 1) As Variant
result(1, 1) = String(256, "A")
LongueChaine = result
End Function


Dans une feuille j'écris :

{=LongueChaine()} Validation matricielle en colonne

et j'obtiens toujours #VALEUR! alors que si :

result(1, 1) = String(255, "A")

chaîne de 255 caractères, j'ai bien le résultat attendu.

Peut-on se débarrasser de cette limitation très fâcheuse ?

Merci d'avance pour vos lumières.

3 réponses

Avatar
MichD
Bonjour,

Je n'observe pas la même chose que toi. Fichier créé avec Excel 2013.
Fichier Exemple : http://www.cjoint.com/c/ELlqAEKyfvG

Je ne comprends pas ce que cette fonction doit faire...
Avatar
GL
Le 11/12/2015 17:28, MichD a écrit :
Bonjour,

Je n'observe pas la même chose que toi. Fichier créé avec Excel 2013.
Fichier Exemple : http://www.cjoint.com/c/ELlqAEKyfvG

Je ne comprends pas ce que cette fonction doit faire...



Non, vous avez écrit :

Function LongueChaine() As Variant
Dim result(1 To 2, 1 To 1) As Variant
result(1, 1) = String(260, "A")
LongueChaine = result(1, 1)
End Function


C'est : LongueChaine = result

pas : LongueChaine = result(1,1)


Autrement dit, LongueChaine est une fonction qui
renvoie un tableau. Si le tableau contient, quelque part,
une chaîne de plus de 255 caractères, alors le résultat
est toujours #VALEUR!

C'est super casse pieds !
Avatar
MichD
Essaie comme ceci : http://www.cjoint.com/c/ELlrQz7XJNG

'-----------------------------------------------
Function LongueChaine() As Variant

Dim result(1 To 2, 1 To 1) As String
result(1, 1) = String(300, "A")
result(2, 1) = String(400, "B")
LongueChaine = result
End Function
'-----------------------------------------------

Désolé, mais cela fonctionne ! ;-))