Tableau qui ne se remplit pas completement

Bonjour,

Je vais essayer de résumer mon problème simplement :

J'ai différents tableaux de données que je veux compiler en un seul. C'est un mélange de copier-coller et de transposées c'est pour ça que j'ai créé une macro.

Elle entre d'abord toutes les données brutes dans une base (data1) puis attribue les valeurs de data1 à une autre base (database) dans l'ordre qui m'intéresse.

Ca marchait bien jusqu'à maintenant mais la taille de mes tableaux de départ a augmenté récemment et sur certaines parties de ma boucle qui copie les données de data1 vers database, il ne copie pas tout mais s'arrête à 2500 exactement.

Ma première question est donc de savoir à quoi correspond cette limite ? J'ai paramétré toutes mes variables en "Long" :

Dim data1()
Dim lignemax As Long
Dim colonnemax As Long

Dim database()
Dim NB_LIN As Long
Dim NB_COL As Long

Dim Moyennes()
Dim NB_LIN_MOY As Long
Dim NB_COL_MOY As Long

Dim start As Single

Dim i As Long
Dim j As Long
Dim x As Long
Dim s As Long
Dim Onglet As Integer

Je n'en dis pas plus pour le moment si déjà je comprends pourquoi ça s'arrête à 2500, j'aurais peut-être une piste ! :-)

Merci d'avance !!

Bonjour,

Voici les limites des variables :

image

Je ne penses donc pas que cela soit à cause du Long

Bonjour Cécilia TS, Valentin85, le fil

Je vais dans le sens de Valentin85, la limite d'un tableau est conséquente à la capacité mémoire... !

Ce qui veut dire que ce n'est pas les dimensions ou la taille du tableau lui-même qui tronque es données à 2500, mais l'espace mémoire restant pendant l'exécution de ton code. Peut-être peut-il être simplifié, rendu moins gourmand en ressources ou bien faut-il fermer d'autres applications !

Le problème et sa solution, se situe plus dans ces hypothèses...

Bonjour,

Je vais essayer de résumer mon problème simplement :

Le problème c'est que cette longue liste de déclaration ne dit rien de tes tableaux. Cela permet juste une supposition sur la méthode : On peut simplement penser que tu travailles directement sur des boucles de valeurs de cellules (voire des valeurs calculées ?) au lieu de travailler sur des Arrays.

Il y a certainement une erreur pratique: Pour le transfert de données plus ou moins volumineuses le programmeur expérimenté utilise des Array ou PQ (Power Query) ou (peut-être... je n'ai jamais essayé !) un cocktail des 2 !

Dans la première hypothèse tu n'as besoin que de 2 variables ArrS pour ton tableau Source et ArrC pour ton tableau Cible.

Comprend :

Ce n'est pas la déclaration de tes variables qui limite tes calculs mais ce que tu mets dedans.

Tu peux toujours déclarer une variable NbCol ou NbColMax as Long, comme il n'y a que 16384 colonnes au maximum dans une feuille ça ne te servira pas à grand chose.... C'est donc bien le contenu d'une de tes variables qui limite tes résultats. Surtout si c'est une variable calculée...

Après sur l'analyse du code je ne te proposerai rien car l'utilisation de variables monocaractère alphabétique (i,j,x,y,z...) rend le débogage quasiment impossible.

A+

Bonjour à tous

J'ai différents tableaux de données que je veux compiler en un seul. C'est un mélange de copier-coller et de transposées c'est pour ça que j'ai créé une macro.

Tableaux de données donc effectivement PowerQuery est en général plus adapté que VBA...

Bonjour à toutes et tous,

Merci infiniment pour vos réponses. Je suis autodidacte sur VBA et visiblement il me manque des nuances ! :-)

Si j'ai bien compris tous vos messages je vais tenter dans cet ordre :

1. faire tourner la macro en fermant toutes les autres appli (mais le fait que ça s'arrête à pile 2500 m'intrigue quand même toujours)

2. je vais essayer de trouver des infos sur Array et transformer ça comme ça

3. je vais transformer mes variables monosyllabiques pour éventuellement vous montrer mon programme?

4. je me formerai à Power Query

Peut-être en question subsidiaire, cela pourrait expliquer peut-être quelque chose : quand j'essaie de faire tourner ma macro pas à pas, j'ai ce message à un moment :

image

une idée de ce que cela peut vouloir dire ?

N'hésitez pas à me dire si je ne vous donne pas assez d'infos, c'est juste que je ne veux pas vous noyer !

Merci beaucoup et bonne journée !

A ta place moi je ferai plutôt 3,2,1,4...

A la réflexion il faudrait mieux commencer par le point 5 : Me former au débogage !

Ce message d'erreur signifie qu'à un moment une de tes variables sort des limites de data1 (p.e. Data1 n'a que 100 lignes et i = 101 ou Data1 n'a que 100 colonnes et j = 101...)

Pour savoir laquelle il suffit d'accepter le débogage et de survoler i et j pour connaitre sa valeur au moment de l'erreur.

Autre méthode : Accepter le débogage puis Taper ?i puis Enter ou ?j puis Enter dans la Fenêtre d'Exécution VBA

Pour nommer tes variables

row : iRS ou iRC (iRowSource et iRowCible)

colonne : iCS et iCC (iColSrc et iColC

iLR ou iLC : iDerRow ou iDerCol...

A+

Merci !

C'est bien ce que je pensais (valeurs trop hautes pour ce qui était paramétré) et je pensais avoir bien regardé (j'avais bien survolé les variables pour voir les valeurs). Mais je vais refaire un tour visiblement je l'ai pas bien fait...

Rechercher des sujets similaires à "tableau qui remplit pas completement"