Une "belle" découverte ce soir dont je n'arrive pas à trouver d'équivalent sur le net : la lecture accompagné d'un Format d'un élément Empty d'un tableau-array le transforme en Null.
En plus court : la lecture d'une donnée impacte la donnée !
Au départ, j'ai une variable tableau de type non défini donc variant qui, après un Redim, reçoit certaines informations chiffrées. Les valeurs possibles sont soit rien (=Empty) soit une décimale allant de 0 à 1. Je traite dans cet array des calculs que je faisais initialement dans un tableau sur une feuille excel.
Lors d'un test, l"envoi final de l'array vers une feuille se met à planter :
J'inspecte et je découvre que le Tableau contient des Null qui plantent cette ligne de code.
D'où vient le Null ? Au moment de sa création ? Non tout est ok, il y a un Redim puis des infos sont envoyées, rien = Empty.
Par contre, avant l'envoi sur feuille, il est possible que j'affiche les données de ce tableau dans un listview dans un userform. Comme il s'agit de pourcentage, je les formate comme tel... C'est à ce moment que cet abruti va modifier le contenu de mon array sans rien me demander :
Voilà, si vous avez déjà rencontré cela, si vous connaissez l'explication fondamentale... N'hésitez pas.
Côté conséquences et solutions, j'ai rajouter un condition "if not isempty..." pour m'adapter mais globalement, j'y vois une sacrée pierre dans le beau mais piégeux jardin des Arrays.
En plus court : la lecture d'une donnée impacte la donnée !
Au départ, j'ai une variable tableau de type non défini donc variant qui, après un Redim, reçoit certaines informations chiffrées. Les valeurs possibles sont soit rien (=Empty) soit une décimale allant de 0 à 1. Je traite dans cet array des calculs que je faisais initialement dans un tableau sur une feuille excel.
Lors d'un test, l"envoi final de l'array vers une feuille se met à planter :
Code:
.Cells(y, DecaL3 + 1).Resize(UBound(tTab3, 2), UBound(tTab3, 1)).Value = Application.Transpose(tTab3)
J'inspecte et je découvre que le Tableau contient des Null qui plantent cette ligne de code.
D'où vient le Null ? Au moment de sa création ? Non tout est ok, il y a un Redim puis des infos sont envoyées, rien = Empty.
Par contre, avant l'envoi sur feuille, il est possible que j'affiche les données de ce tableau dans un listview dans un userform. Comme il s'agit de pourcentage, je les formate comme tel... C'est à ce moment que cet abruti va modifier le contenu de mon array sans rien me demander :
Code:
With UserForm3.ListView2
for i = 1 to 10
'(tTab3(i, 1) = Empty
.ListItems(.ListItems.Count).ListSubItems.Add , ,Format(tTab3(i, 1), "0.00%")
'(tTab3(i, 1) = Null
next i
end with
Voilà, si vous avez déjà rencontré cela, si vous connaissez l'explication fondamentale... N'hésitez pas.
Côté conséquences et solutions, j'ai rajouter un condition "if not isempty..." pour m'adapter mais globalement, j'y vois une sacrée pierre dans le beau mais piégeux jardin des Arrays.