Passer outre la limitation à 255 caractères des chaînes de caractères
3 réponses
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 ?
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 !
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!
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!
'----------------------------------------------- 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 ! ;-))
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
'-----------------------------------------------
'----------------------------------------------- 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 '-----------------------------------------------