Procédure trop grande

Toutou

XLDnaute Occasionnel
Bonjour à tous,
voilà, grâce à d'éminents Xldnautes, tels Robert, Pascal 76 et bien d'autres;) , je suis parvenu après 3 long mois à réaliser un programme de gestion des commandes et devis complètement tordu et d'une complexité inégalable; et à cause (ou grace car j'ai pu apprendre un tas de chose) des gens pour qui je travaille. Bref, alors que j'en suis à la période d'essais, un message d'erreur est apparu après avoir cliqué sur le bouton d'un userform: :unsure:

erreur(je ne sais plus combien' : PROCEDURE TROP LONGUE!!! :eek: :side:
Je ne pensais pas que cela pouvait se produire.

J'ai donc supprimé ce que je pouvais: commentaire, espaces, passage de lignes...mais la procédure en taille 12 + Times New Roman mesure toujours 27pages sur Word. Quelqu'un aurait-il une solution à ce PETIT problème????
:huh:
Quelque soit la proposition je suis preneur...
;)

dans l'attente de vous lire chers amis,
merci d'avance
à +
Toutou
 

Toutou

XLDnaute Occasionnel
Salut Creepy,
merci de te pencher sur la questio,
voici un fichier, contenant la fameuse procédure issu de mon programme gros de 12.8Mo.
Je ne sais pas si tu comprendra tout: les noms de textBox checkbox et optionbutton sont parfois farfelus
Toutou [file name=ProcedureLongue.zip size=33040]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ProcedureLongue.zip[/file]
 

Pièces jointes

  • ProcedureLongue.zip
    32.3 KB · Affichages: 30

coco_lapin

XLDnaute Impliqué
Bonjour Toutou,Creepy, escalibur et le forum

J'ai parcouru ton code. Ce problème m'est arrivé il y a déjà longtemps et il a fallu que je coupe en morceaux.
Maintenant, quand je développe, la première étape consiste à structurer l'application en la découpant en morceaux. Au début on a l'impression de ne pas avancer mais finalement c'est très payant.
A part ton problème à court terme, que tu voudrais résoudre rapidement pour que ça tourne, j'ai quelques remarques si je puis me permettre:
- tu as très peu de variables de déclarées
- tu n'as pas de plage ou cellules des onglets nommées. Si tu ajoute plus tard des colonnes ou lignes dans ton application cela marchera-t-il encore?
- tu as plein de contrôles sur la feuille. Ne pourrais-tu pas les mettre sur des userformes? Le code serait un peu plus dans les userforme et cela irait dans le bon sens pour ton problème.

Si tu veux découper en morceaux il faut créer plusieurs macros, avec certaines qui en actionnent d'autres.
Je joins l'exemple ci-dessous qui pourra t'aider.
Tu connaissais ou pas?

Pourrais-tu envoyer tes userformes pour comprendre un peu mieux ton architecture, car la solution se trouve par là.

Sub Appel_autre_macro()
Var2 = 50
Macro_cible
Cells(2, 1) = Var2
End Sub

Sub Macro_cible()
Var1 = 45
Var2 = 10
Cells(1, 1) = Var1
End Sub
 

Toutou

XLDnaute Occasionnel
Salut à tous,
Bonsoir coco_lapin,
Mon programme est au boulot, je ne l'ai pas là, je ne peux donc pas t'envoyer mes usf pour l'instant.
mon programe étant lourd, j'ai copié-coller dans un module la procédure du bouton d'un userform pour pouvoir l'envoyer. En fait, ce userform recceuille des infos puis les redistribue dans différentes feuille; des calculs sont effectués et tout est rassemblées dans une seule et même feuille qui permet de tout visualiser. pour mes variables, si elles ne sont pas déclarées dans la partie que j'ai envoyée, elles doivent l'être dans le reste de mon programme.
J'ai pris une partie de ma procédure que j'ai insérer dans une autre procédure d'un module; puis j'y ai fait appel; maintenant, le problème est résolu.
Merci de t'être arréter sur ce problème.
J'essaierai de t'envoyer mon usf demain matin.
Bonne Soirée,
@+
Toutou
 

Creepy

XLDnaute Accro
Bonjour à tous,

Je n'arrive pas à poster ma réponse sur ce fil pour une raison que j'ignore, j'ai un 'internal error'

Pourtant pas de macro XLS->XLD Mais bon du coup je mets ma reponse en PJ

@+

Creepy [file name=REAll.zip size=3504]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/REAll.zip[/file]
 

Pièces jointes

  • REAll.zip
    3.4 KB · Affichages: 27

Toutou

XLDnaute Occasionnel
Re,
Creepy, merci pour tes suggestions, j'ai réccupéré des feuilles de calculs déjà créées, et si j'y renvoies des données c'est pour en récuppérer dans ma feuille principale uniquement les résultats qui m'intéressent. Donc je ne peux pas mettre des informations les unes à la suite des autres dans ces feuilles de calculs, elle se place en fonstion de la structure des calculs...

Ensuite, en ce qui concerne les procédures des contrôles, il y a un moment déjà j'avais essayé, mais je n'avais pas eu le résultat escompté.

Pour la boucle with, n'y a-t-il pas de problèmes dus à l'emplacement d'une boucle with dans une autre?

Pour résoudre mon petit problème, j'ai créer un module dans lequel j'avais inérer des procedures contenant chacune une partie du code. puis dans le code de mon usf, j'ais insérer des boucles contenant la fonction 'call' comme vous me l'aviez suggéré.

Creepy, merci pour tes tuyaux, j'essaierai de les mettre en pratique à l'avenir, merci beaucoup.


Bonne journée, @ +
Toutou