Quelqu'un peut-il me dire s'il connaît cette limite dans l'utilisation de Evaluate(Names(... ?
Dans le fichier d'essai joint, j'ai un tableau de données que je sauve sous la forme d'un nom. Lorsque le nombre de données dépasse 87, il y a une erreur à la récupération....
Bonjour.
J'ai cependant remarqué que 9 * Len("X;") +78 * Len("xx;") + Len("={}") = 255, soit la longueur de String maximale codable sur 1 octet.
Alors la limite est peut être là.
Sub Création()
Names.Add Name:="MemDonnées", RefersTo:=Range(Range("Début"), Range("Début").End(xlDown)), Visible:=True
End Sub
Sub Récupération()
Dim T2 As Variant
T2 = Evaluate(Names("MemDonnées").RefersTo)
MsgBox T2(UBound(T2), 1)
End Sub
Comme d'habitude lorsque l'on demande un renseignement, on simplifie pour faire cette demande et ensuite cela ne correspond plus
En fait, je n'utilise pas directement les données de la feuille mais je transfère à un instant donné cette plage de données dans un Variant dont je veux, plus tard récupérer les données. Lorsque je veux transformer le fichier de pierrejean pour fonctionner de cette façon, cela ne va plus...ça coince à la récup!
Voir fichier joint ; explications dans les commentaires du code
Je pense qu'on peut en conclure qu'un nom d'une collection Name n'est pas un bon support pour mémoriser un tableau, s'il nest pas vraiment très petit.
Bien d'autres supports sont préférables selon la pérénité souhaitée: variable globale ou feuille du classeur, voire fichier.
Oui je sais bien que l'on peut stocker dans une autre feuille mais là je ne le souhaitais pas et je trouvais cela pratique...La variable globale, non, car c'est pour récupérer ces données fugitives à l'ouverture de la session suivante ou pour les comparer au cours du déroulement du programme.
Bon, ce n'est pas grave mais je ne comprends pas bien pourquoi cette limite alors qu'EXCEL traite maintenant des tableaux énormes.
Ça vaudrait le coup de vérifier si ça ne passerait pas mieux d'évaluer le nom, Evaluate("MemDonnées") ou bien [MemDonnées] plutôt que le RefersTo du nom.