J'ai un soucis lié au chargement d'un array via un range.
En général, je remplis mes Array de la manière suivante:
Code:
Sub test()
Dim tableautest()
Dim LastLine as Long
LastLine = 971
tableautest = ActiveSheet.Range("A2" & ":W" & LastLine).Value
End Sub
Dans une macro, une feuille à 971 lignes se remplit alors qu'une feuille à 825 entraîne une erreur de dépassement de capacité.
Je précise que la démarche utilisée est exactement la même.
Je pensais que le problème vennait du fait que dans les feuilles, les cellules de chaque colonne sont des fois renseignées, des fois vides et que cela crée du volume.
Or dans la feuille à 825 il y a 15837 celllules non vides.
Dans la feuille à 971, il y en a 18805.
Dans certaines colonnes, il y a des nombres, d'autres du texte. Mais toutes les colonnes sont dans le format "Standart". Est-ce que VBA convertit les nombres dans un autre type que Variant dans l'array? Est-ce qu'il faut que je déclare l'array dans un autre type? Est-ce qu'il faudrait que je scinde mon array en plusieurs array?
Comment je pourrais détourner ce problème?
Etant donné que les feuilles ont des informations plutôt confidentielles, si quelqu'un souhaite m'aider, je peux lui fournir en message privé ces données. Mais à priori je pense pas que cela soit nécessaire.
Hum juste comme ça, comme tu utilises Activesheet, es-tu certain que tu es sur cette feuille quand tu lances ton code ?
Perso, je préfère utiliser Worksheets("son p'tit nom").Range......pas de risque d'erreur dans ce cas
Pour répondre à ta question concernant le type du tableau, toutes les données sont considérées comme du Variant car ton tableau est désigné comme tel.
Oui effectivement, j'ai procédé de la même manière que Paf pour trouver la cellule fautive.
Et j'ai trouvé!
Bizarrement, VBA convertit trois cellules en format personnalisé à la suite d'une copie d'un array dans une feuille qui lui même copiait les données d'une autre feuille (alors qu'à la base tout est en standart dans la feuille de données d'origine)...
Enfin bref, je n'ai pas compris pourquoi il fait ça mais j'ai trouvé la parade en écrivant: