Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Plantage excel - Macros trop longue

  • Initiateur de la discussion Initiateur de la discussion didibzh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

didibzh

Guest
Bonjour a tous,
voila j'ai crée un fichier excel pour le travail mais celui plante parfois lord de l'exécution de la macros.
je pense que ma macros est trop long
Ce que je comprend pas c'est que si j'ouvre mon classeur puis l'enregistre sa marche bien, mais si je l'ouvre puis exécute la macros sa plante
Voici le code:
 

Pièces jointes

  • code.zip
    code.zip
    11.2 KB · Affichages: 70
  • code.zip
    code.zip
    11.2 KB · Affichages: 77
  • code.zip
    code.zip
    11.2 KB · Affichages: 86
  • Couper_11.jpg
    27 KB · Affichages: 166
Re : Plantage excel - Macros trop longue

Bonjour didibzh, bonjour à toutes et à tous 🙂


Je ne peux que te confirmer que ta macro est très longue : petit calcul en passant par Word : 142 pages dont 141 à raison de 60 lignes / page et un dernière page qui contient 32 lignes, soit au total 8492 lignes si j'ai bien compté.

Je ne sais pas si quelqu'un va te répondre, mais je t'avoue que c'est trop long pour moi, que je ne dispose pas d'informations utiles (ça plante, c'est assez léger comme info...) ni du fichier pour effectuer un débugage.

Désolé 😱

@+

EDIT : Je rectifie car j'ai modifié la taille de la police de caractères pour ne pas avoir de sauts de lignes non désirés, et cela ne fait plus que 8097 lignes.
 
Dernière édition:
Re : Plantage excel - Macros trop longue

Bonjour à tous,

je ne peux pas ouvrir les zip mais peut-être une piste :
autant que je sache, il y a une longueur maximale pour une Sub. Essaye :

Sub Test1()
'1ère moitié du code
Call Test2
End Sub

Sub Test2()
'2ème moitié du code
End Sub
 
Re : Plantage excel - Macros trop longue

Re, bonjour tototiti2008 🙂

Envoyé par tototiti2008
je ne peux pas ouvrir les zip mais peut-être une piste :
autant que je sache, il y a une longueur maximale pour une Sub.

Au temps pour moi car je ne savais pas qu'il y avait une longueur maximale. Toutefois, dans le fichier code.txt, il y a 393 procédures (Sub), je n'ai pas vérifié s'il y avait des fonctions ni la longueur des procédures 😱

@+
 
Re : Plantage excel - Macros trop longue

Re,

nolich :
après test, 1424 lignes maximum pour une Sub ou Function en XL 2003.
mais l'erreur est claire : "Procédure trop grande" donc ça ne doit pas être l'erreur de didibzh...
 
Re : Plantage excel - Macros trop longue

Re 🙂

Merci pour l'information tototiti 🙂

Malheureusement cela ne résoud pas le problème de mon ami breton. Attendons qu'il nous donne un peu plus d'infos 😉

@+
 
Re : Plantage excel - Macros trop longue

merci a nolich,tototiti2008
de vous être arrêter sur mon message.
en faite ce classeur excel correspond au catalogue standard des produits de l'entreprise ou je travail. il me permet de faire les devis rapidement. j'y ajoute régulièrement de nouveau produits.
mais depuis que j'ai ajouté deux nouveaux produit ce qui correspond
sa bloc carrément excel et le ferme.
sauf si j'ouvre mon classeur puis l'enregistre et lance ma macro sa marche tres bien
et la sa me dépasse.
 
Re : Plantage excel - Macros trop longue

Re 🙂

Désolé didibzh mais je ne peux pas plus t'aider qu'avant d'avoir eu le code.

Y-a-t-il une ligne dans laquelle le code bloque ? As-tu au moins un message d'erreur ?

Honnêtement, je ne vois pas. Peut-être la référence à des étiquettes (à bannir, c'est mieux).

Enfin bref, je suis à ta disposition si tu veux plus d'information. Donne-moi seulement ton @adresse mail par MP pour pouvoir t'aider sans passer par le forum (je donnerai les indications au besoin pour les futurs "chercheurs")... 🙂

@+
 
Re : Plantage excel - Macros trop longue

Re 🙂

Peut-être que comme ceci, cela pourrait aller un peu mieux :

Code:
Private Sub Comptoirs_Suite_Click()

  If QCLE.Value <> "" Then
    
    '-----------------'
    ' Première partie '
    '-----------------'
    
    'insertion de ligne
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    'Copie mise en forme
    Sheets("1").Select
    Range("A1:k25").Select
    Selection.Copy
    Sheets("Devis").Select
    Selection.Insert Shift:=xlDown
    '-----------------Surface----------------
    ActiveCell.Offset(1, 3).Range("A1").Select
    ActiveCell.Value = SCLE.Value
    ActiveCell.Offset(0, 4).Range("A1").Select
    ActiveCell.Value = "Comptoir Ligne Essentiel"
    'Retour à l'origine
    ActiveCell.Offset(-1, -7).Range("A1").Select
    'Déplacement de**
    ActiveCell.Offset(7, 2).Range("A1").Select
    ActiveCell.Value = QCLE.Value
    'Retour à l'origine
    ActiveCell.Offset(-7, -2).Range("A1").Select
    '-----------------PRIX--------------------
    'Déplacement de**
    ActiveCell.Offset(7, 3).Range("A1").Select
    ActiveCell.Value = "élément de 600"
    ActiveCell.Offset(0, 3).Range("A1").Select
    ActiveCell.Value = "='Tarifs'!r268c6 "
    'Retour à l'origine
    ActiveCell.Offset(-7, -6).Range("A1").Select
    'Copie descriptif
    ActiveCell.Offset(12, 3).Range("A1").Select
    Sheets("Descriptif").Select
    Range("H201:H207").Select
    Selection.Copy
    Sheets("Devis").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    ActiveCell.Offset(-12, -3).Range("A1").Select
    '----------------------------------------
    ActiveCell.Offset(26, 0).Range("A1").Select
    
    
    '----------------'
    ' Seconde partie '
    '----------------'
    
    ' insertion de ligne                       '
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    'Copie mise en forme
    Sheets("1").Select
    Range("A1:k25").Select
    Selection.Copy
    Sheets("Devis").Select
    Selection.Insert Shift:=xlDown
    '-----------------Surface----------------
    ActiveCell.Offset(1, 3).Range("A1").Select
    ActiveCell.Value = SCLC.Value
    ActiveCell.Offset(0, 4).Range("A1").Select
    ActiveCell.Value = "Comptoir Ligne Continue"
    'Retour à l'origine
    ActiveCell.Offset(-1, -7).Range("A1").Select
    'Déplacement de**
    ActiveCell.Offset(7, 2).Range("A1").Select
    ActiveCell.Value = QCLC.Value
    'Retour à l'origine
    ActiveCell.Offset(-7, -2).Range("A1").Select
    '-----------------PRIX--------------------
    'Déplacement de**
    ActiveCell.Offset(7, 3).Range("A1").Select
    ActiveCell.Value = "élément de 600"
    ActiveCell.Offset(0, 3).Range("A1").Select
    ActiveCell.Value = "='Tarifs'!r269c6"
    'Retour à l'origine
    ActiveCell.Offset(-7, -6).Range("A1").Select
    'Copie descriptif
    ActiveCell.Offset(12, 3).Range("A1").Select
    Sheets("Descriptif").Select
    Range("H211:H217").Select
    Selection.Copy
    Sheets("Devis").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    ActiveCell.Offset(-12, -3).Range("A1").Select
    '----------------------------------------
    ActiveCell.Offset(26, 0).Range("A1").Select
  End If
  
End Sub

Plus d'étiquettes surtout. Tu remarqueras que ta seconde étiquette était dans le "Else" juste avant le End If.

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
Réponses
9
Affichages
1 K
D
Réponses
4
Affichages
901
D
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…