HELP Compil error: procedure too large

nadejka Messages postés 4 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 22 mars 2005 - 21 mars 2005 à 16:15
nadejka Messages postés 4 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 22 mars 2005 - 22 mars 2005 à 13:42
Bonjour,

Je suis en train de créer un configurateur, mes macro sont assez longues.
Là après avoir saisie mes dernières contraintes; voici ce que je viens d'avoir comme message: Compil error: Procedure too large

Y a t-il un moyen de contourner ce pb, je ne peux pas supprimer des morceaux de macro.
J'ai essayé de faire plusieurs morceaux:
Private Sub Worksheet_change(ByVal Target As range)
et
Private Sub Worksheet_change1(ByVal Target As range)
mais du coup mes contraintes ne marchent plus...

Si quelqu'un a une solution?

Merci d'avance
Nadège
A voir également:

5 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 mars 2005 à 16:34
Fait des sous-sub ..
Au lieu def aire toutes tes actions dans WorkShhet_Change()
Tu met dans worksheet_Change() des appels à des sous-sub
Call SousSub1
call SousSub2
...
Et tu déplaces des bouts de code dans les SousSubn

Christophe R
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 mars 2005 à 17:31
Il me semble qu'en VBA Excel, une sub ne peut dépasser 65535 octets. C'est déjà pas mal pour une sub et ça peut même devenir illisible.
Seule solution, comme dit Christophe c'est de découper ta macro en plusieurs sub ou function.

Loup Gris
0
nadejka Messages postés 4 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 22 mars 2005
22 mars 2005 à 11:19
OK, merci

mais comment ça marche les Call SousSub ?
Comment dois-je les intégrer à ma macro ?

Ma macro commence par:
Private Sub Worksheet_change(ByVal Target As range)
...........
...........
End Sub

Merci de votre aide
Nadège
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
22 mars 2005 à 12:18
Disons que pour l'instant tu as UNE SEULE Sub qui fait tout donc qui contient plusieurs blocs d'instructions faisant chacun une action particulière.

Tu peux parfaitement bien créer, à l'extérieur de ta Sub une autre Sub du style
Sub LeNomQueTuVeux()
dedans, tu mets le bloc d'instruction et à la place de ce bloc dans ta Sub principale tu mets
call LeNomQueTuVeux
S'il y a des paramètres tu codes
Sub LeNomQueTuVeux(param1 as TonType, etc...)
et
call LeNomQueTuVeux(param1, etc ...)

Pour être plus clair, il faudrait un bout de ton code, pas la totale car là le forum risque d'être submergé.

Loup Gris
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nadejka Messages postés 4 Date d'inscription lundi 21 mars 2005 Statut Membre Dernière intervention 22 mars 2005
22 mars 2005 à 13:42
OK,
voici des bouts de mon programme
Le sub principal:
Private Sub Worksheet_change(ByVal Target As range)
'AS_ENC seul*********************************************
'AA_ENC sélectionné If (Target.Row 18) And (Target.Column 4) Then
If Worksheets("Input").Cells(12, 4).Value >= 1 >= 1 Then
MsgBox "STOP, AA_ENC is already provided with AS_ENC!"
Worksheets("Input").Cells(18, 4).Value = ""
End If
If Worksheets("Input").Cells(12, 4).Value >= 1 And Worksheets("Input").Cells(18, 4).Value >= 1 Then
MsgBox "Recall, AA_ENC are only for SP_ENC or DP_ENC!"
End If
End If
End Sub

Les sous sub qui doivent aller à la fin du sub principal:
Sub AUD_ENC(ByVal Target As range)
'AUD_ENC
End Sub

Sub ENCODING
'Encoding
'Decoding
'FE
End Sub
0
Rejoignez-nous