Problème lié au nombre de variables déclarées dans un projet

Bonjour,

Je travaille actuellement sur un outil de calcul développé sous Excel 2010 avec du VBA.

Le programme fonctionnait correctement, mais depuis que des mises à jour m'ont amenées à ajouter de nouvelles variables, je me demande si je n'ai pas atteint une "limite"...

Je déclare mes variables dans (General) (Déclarations) de ma feuille nomée ("MENU") ce sont des variables de type variant déclarées comme suit: Dim valeur2053, valeur2054, valeur2055 [...]

J'ai environ 4100 variables (peut-être un peu plus ou moins). à une variable près de déclarée, tout fonctionne ou non.

exemple je déclare : "Dim valeur4030, valeur4031, valeur4032" et mon programme ne marche plus (rappel il y a plus de 4032 variables)

Tandis que si j'en reste à "Dim valeur4030, valeur4031", tout fonctionne.

Est-ce qu'il existe un nombre limite de variables? exemple: 2^12=4096 serrait le plus logique proche de mon problème...?!?

Une solution est-elle envisageable?

Vous remerciant par avance pour vos réponses, je reste à votre disposition pour tout renseignement complémentaire.

Bonsoir

une chose est sur, c'est qu'il faut au mieux typer les variables :

Le type de données doit être défini en fonction de la valeur prise par la variable. Chaque type de donnée utilise un espace mémoire (de 1 octet pour les types de données Byte jusqu'à 22 octets et plus, pour les types de données Variant). Il est donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilement le traitement de la macro.

en clair le type variant est le plus gourment en mémoire.

Si vos variables peuvent avoir du chiffre et du texte alors essayez de les mettre en "String" (sans les déshabillées, évidemment ! )

Je penche plus pour une saturation de mémoire, en effet en Variant VBA réserve une place mémoire "énorme" car il ne sait pas ce qui va arriver donc grosse place, si c'est Boolean, VBA va réservé 1 bit (0 ou 1), donc gain de place mémoire.

@ bientôt

LouReeD

jgrosse a écrit :

Bonjour,

Je travaille actuellement sur un outil de calcul développé sous Excel 2010 avec du VBA.

Le programme fonctionnait correctement, mais depuis que des mises à jour m'ont amenées à ajouter de nouvelles variables, je me demande si je n'ai pas atteint une "limite"...

Je déclare mes variables dans (General) (Déclarations) de ma feuille nomée ("MENU") ce sont des variables de type variant déclarées comme suit: Dim valeur2053, valeur2054, valeur2055 [...]

J'ai environ 4100 variables (peut-être un peu plus ou moins). à une variable près de déclarée, tout fonctionne ou non.

exemple je déclare : "Dim valeur4030, valeur4031, valeur4032" et mon programme ne marche plus (rappel il y a plus de 4032 variables)

Tandis que si j'en reste à "Dim valeur4030, valeur4031", tout fonctionne.

Est-ce qu'il existe un nombre limite de variables? exemple: 2^12=4096 serrait le plus logique proche de mon problème...?!?

Une solution est-elle envisageable?

Vous remerciant par avance pour vos réponses, je reste à votre disposition pour tout renseignement complémentaire.

à la lecture de ce problème, mais sans connaitre les détails, mon premier réflexe serait de définir un tableau de (4100) éléments, plutôt que 4100 variables ...

et d'y faire appel par l'intermédiaire de leur numéro. exemple valeur(4300), valeur(4301) ...

Bonjour,

Merci pour vos réponses constructives!

En effet, LouReeD, en typant certaines de mes variables (sans toutefois leur imposer de strip-tease ), je peux en déclarer plus! 8)

Mais j'en ai de nombreuses qui sont susceptibles d'être soit un texte soit un nombre. Et vue la quantité de variables que je vais être amené à ajouter, cette parade est une solution qui ne peut être que temporaire... (efficace sur le court terme)

Pour ce qui est du tableau, Acide sulfurique, j'ai un programme de quelques milliers de lignes faisant appel à chaque variable 4 fois au minimum.

(programme permettant d'enregistrer le contenu de chacune des variables associées à des cellules paramétrables de l'outil dans un fichier txt type bloc note et de les réinjecter à leur place à partir de cette "sauvegarde" qui permet d'enregistrer beaucoup de simulations tout en prenant moins de place que si on enregistrait des fichiers excel à chaque fois)

(Ironique me direz-vous: je veux gagner de la place, mais j'en manque pour y parvenir )

Le temps que prendrait un changement de toutes celles existantes ne m'est pas accordé... De plus je me demande dans quelle mesure un élément de tableau prendrait moins de place que des variables si chacun de ces éléments peut contenir la même chose que des variables

Est-il possible de déclarer des variables dans un autre module? je pense que ça ne change rien vu que c'est un problème de mémoire vive à priori?

Et est-il possible d'emprunter de la mémoire du disque dur facilement? (devra fonctionner directement sur d'autres postes que celui sur lequel je travaille)

Cordialement

De plus je me demande dans quelle mesure un élément de tableau prendrait moins de place que des variables si chacun de ces éléments peut contenir la même chose que des variables

Bonjour,

pour répondre à cette question précise, je n'ai jamais eu aucun problème pour définir des tableaux allant jusqu'à 100000 éléments.

selon moi le problème ne vient pas de la taille mémoire prises par ces variables mais plutôt de leur nombre, qui je pense, est limité. J'ai fait quelques recherches mais je n'ai trouvé aucune info à ce sujet, cela reste donc de la pure spéculation.

pour ce qui est de la transformation, il est doit être possible de la faire automatiquement via un programme.

Merci pour votre réactivité!!

Je vais me pencher sur la possibilité de passer par un tableau.

En effet, j'ai été étonné de ne trouver aucun site ou forum abordant ce problème, or je pense que je ne suis pas le premier à avoir réalisé un programme avec un certain nombre de variables... même Microsoft n'évoque pas de limitation dans son support aide.

J'utilise pour le moment la solution de LouReeD qui me permet de mettre un sursis à mon problème. (

) il n'y a pas de bouton partiellement résolu ^^

Cordialement

Ce qui est sûr: Une variable de type Variant occupe 16 octets, tandis qu'une variable de type Single en occupe 4. (je remplace don certaines variables qui ne recevront que des nombres).

Conjecture: Si mon raisonnement est juste: il y a 2^16=65536 octets disponibles

65536/16=4096 variables de type Variant au maximum (proche du nombre de variables autour duquel j'étais bloqué)

Donc à chaque fois que je remplace une variable Variant par une Single, je récupère 12 octets. (soit la place pour 3 var As Single supplémentaires).

Je pense que j'ai assez de variables qui seront des nombres pour me libérer suffisamment de place pour arriver à mes fins.

Merci à vous!!

Bonsoir,

une des raisons que l'on ne trouve pas de limite au niveau du nombre de variable dans VBA c'est peut être parce qu'il n'y a pas de limite, si ce n'est la place que dispose l'application pour les mettre en mémoire... non ?

Des variables définies ET typée permet à VBA un gain de temps de traitement, un gain de place mémoire, donc une augmentation d'exécution des procédures...

@ bientôt

LouReeD

Rechercher des sujets similaires à "probleme lie nombre variables declarees projet"