Le Friday 17 October 2008 10:47:47 Francois Gatto, vous avez écrit :
Bonjour,
Fabien a écrit :
Bonjour,
Sauf erreur de ma part, je crois que je suis tombé sur un bug gênant.
Si je considère la procédure suivante:
Sub test
dim st(2) as string
st=array("a","b","c")
print st(0)
ReDim Preserve st(1)
print st(0)
end sub
Normalement, cette procédure devrait renvoyer deux fois "a".
Or le deuxième "print" me renvoie une chaîne vide...
En effet et il s'agit là d'un bug !
Toutefois, juste pour préciser les choses, il convient bien de
travailler sur des variables de même type. Or dans ton code,
l'instruction ReDim sous entend un type Variant
Merci. Je viens de comprendre.
Effectivement, ceci marche:
Sub test
dim st
st=array("a","b","c")
print st(0)
ReDim Preserve st(1)
print st(0)
end sub
L'informatique a parfois ses subtilités qu'il faut du temps à saisir...
On peut contourner le problème en définissant explicitement le type
Variant ou implicitement en ne fournissant pas le typage.
Je contourne le problème en utilisant une variable variant temporaire puis en
recopiant tous les éléments dans un tableau de chaines (Chaque élément du
variant reste en effet une chaine). Un peu lourd, mais ça m'évite des
surprises de compatibilité de variables pour la suite.
Merci,