Array_Dico_Variables à vider ?

Bonjour,

J'ai réalisé un logiciel pour calculer une liste de matériel sans rentrer dans les détails non nécessaire voilà mon problème :

Des données d'une feuille sont analysées pour enlever les doublons et regrouper les valeurs.

Le problème est qu'il semblerait que certaine valeurs soient gardées en mémoire.

Nous passons par différentes objets pour effectuer ce traitement : cellule, array, dico.

Il n'y a visiblement aucun souci sur les cellules et les arrays.

Je pense qu'il doit y avoir certains items du dico qui reste en mémoire. J'ai essayé de vider mais comme le dico est créé a chaque lancement de code ca n'a pas trop de sens...

Un exemple pour bien comprendre :

Etape 1 : avec seulement une travée pour que ça soit simple, de 62 par exemple:

image

Etape 2 : Piquages full ouvert, que des 1 partout

image

Etape 3 : Résultat

image

Et donc la liste matériel :

image

Je refait la démarche :

Etape 1: travée de 62

image

Etape 2 : Je ferme tout les piquages sauf 1 (en supprimant les 1 sauf le dernier)

image

Etape 3 : Résultat

image

Je devrais avoir seulement 1 tuyau souple de taille 820.

Si quelqu'un à une idée je suis preneur

Ces partie de code sont dans le modules M03_LongCannes dans le fichier joint.

Pour lancer le code : cliquer sur Etape 1 puis 2 puis 3.

Merci pour votre aide :)

Bonjour,

C'est le genre de problème qui survient lorsqu'on a des variables publiques.

Donc j'imagine que vous avez un dictionnaire déclaré en public ou alors un dictionnaire qui s'alimente à partir d'un ou plusieurs tableaux publics.

Cdlt,

Bonjour,

Au début de l'exécution du code il suffit de faire Dico.Clear!

Dysorthographie,

Merci pour ta réponse mais j'ai un message d'erreur

image image

3GB,

Effectivement mes array sont en public j'ai pas trop le choix puisque je les utilise dans plusieurs sub.

J'ai donc essayer de les clear mes message d'erreur aussi

image

Merci pour votre aide :)

Ici, dico est un exemple, il faut bien entendu reprendre le nom de votre variable dictionnaire pour que l'objet soit reconnu (et donc nécessairement après la déclaration de celle-ci).

Ensuite, je crois que la méthode clear n'existe pas et qu'il faut la remplacer par .removeall.

Vos tableaux ne sont pas vraiment des objets et n'ont pas de méthode donc impossible de les réinitialiser comme ça. D'ailleurs, je ne sais pas s'il faut le faire vu que ce sont des variables publiques. Cela pourrait compromettre vos autres codes.

Sinon, quand on ne maitrise pas parfaitement les variables publiques, il vaut mieux essayer de s'en passer.

Je sais que ça peut parfois être très utile. Dans ce cas, il vaut mieux passer par des variables de procédure pour éviter d'altérer les tableaux publics :

public tabpublic

sub test()
tTemp = tabpublic
'on travaille avec tTemp
end sub

L'utilisation de variables tampon permet un meilleur suivi de l'exécution.

Okay,

Erase tabtube
Erase tabtube2

Semble solutionner le problème!

Merci

En effet, ça solutionne probablement ce problème là. Mais je pense que le problème est structurel...

C'est à dire ?

J'avais pas trop le choix d'utiliser une variable public étant donné que c'est un tableau que j'utilise pour un dico.

Puisque je n'ai pas réussi à insérer mon traitement dico directement dans le sub j'ai dû en faire un autre.

Je veux bien des détails pour que je puisse améliorer ma structure

Si, la plupart du temps, on a le choix et ce n'est pas nécessaire.

En fait, on peut rentrer des paramètres à nos fonctions et procédures et ça vaut pour les tableaux et les objets. C'est en général la meilleure façon de coder et de maintenir du code. On divise nos étapes, ça les rend plus lisibles, ça permet de mieux déboguer et accessoirement de factoriser le code lorsqu'on utilise tout le temps une même procédure.

Mais bien entendu, on peut se passer de paramètres et utiliser des variables publiques. Cela dit, il faut bien le faire et dans le doute, il vaut mieux protéger sa variable en utilisant une variable tampon. Il faut bien que les choses soient claires avec celles-ci : Il y a un temps pour les affecter (les modifier) : c'est l'écriture et un temps pour les lire (lire leur valeur) : c'est la lecture.

Je dis ça car il peut arriver qu'une variable publique se balade un peu dans toutes les procédures, change de valeur tout le temps, et ça peut vite devenir difficile à suivre...

Rechercher des sujets similaires à "array dico variables vider"