Plantage excel - Macros trop longue

didibzh

XLDnaute Nouveau
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
    11.2 KB · Affichages: 70
  • code.zip
    11.2 KB · Affichages: 77
  • code.zip
    11.2 KB · Affichages: 86
  • Couper_11.jpg
    Couper_11.jpg
    27 KB · Affichages: 154

nolich

XLDnaute Occasionnel
Re : Plantage excel - Macros trop longue

Bonjour didibzh, bonjour à toutes et à tous :)

Envoyé par didibzh
voila j'ai créé un fichier excel pour le travail mais celui-ci plante parfois lors de l'exécution de la macro.
je pense que ma macro est trop longue
Ce que je ne comprends pas c'est que si j'ouvre mon classeur puis l'enregistre ça marche bien, mais si je l'ouvre puis exécute la macro ça plante

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é :eek:

@+

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:

tototiti2008

XLDnaute Barbatruc
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
 

nolich

XLDnaute Occasionnel
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 :eek:

@+
 

didibzh

XLDnaute Nouveau
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
Private Sub Comptoirs_Suite_Click()
If QCLE.Value = "" Then
GoTo comptoir_L_C
Else
'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
End If

comptoir_L_C:
If QCLC.Value = "" Then
GoTo Accessoire_comptoir_suite:
Else
'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

Accessoire_comptoir_suite:
End If
End Sub
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.
 

nolich

XLDnaute Occasionnel
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")... :)

@+
 

nolich

XLDnaute Occasionnel
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.

@+
 

Discussions similaires

Réponses
8
Affichages
453

Statistiques des forums

Discussions
312 201
Messages
2 086 174
Membres
103 152
dernier inscrit
Karibu