XL 2019 Problème de rapidité exécution

Cédric06400

XLDnaute Nouveau
J'ai besoin de vos lumières.

Je travaille depuis des années (2002) sur un fichier Excel (version 97-2003). C'est presque un programme maintenant. Ce fichier était volumineux près de 26 Mégas (beaucoup de feuilles , de cellules avec des formules et des Userforms).

Bref ce fichier était en bout de course (bugs récurrents).

J'ai entrepris d'en créer un nouveau "Programme" sur une nouvelle version d'Excel. J'en ai profité pour simplifier les codes, grâce notamment à l'expérience que j'ai acquise à travers votre forum.

Ce travail m'a pris plusieurs semaines et j'arrive au bout. J'ai tout recréé.

Tout fonctionne à la perfection mis à part une lenteur incompréhensible sur les copiés-collés.
Comme si le presse papier était saturé !
J'ai aussi une lenteur sur certaines macros telle que celui-ci :

Sub SupVides()
Application.ScreenUpdating = False
Dim i As Long, MaVal As Variant 'Renseigner la valeur recherchée pour supprimer les lignes
MaVal = "1"
For i = Range("H10000").End(xlUp).Row To 80 Step -1 '8 correspond à la colonne H
If Cells(i, 87).Value Like MaVal Then Rows(i).Delete
Next i

End Sub

J'ai comparé avec l'ancienne version cette macro mets 10 fois plus de temps que sur la version précédente !!!
J'ai fait des tests dans tous les sens, j'ai l'impression que c'est mon fichier qui a un problème.

Si vous avez des idées, j'aimerais éviter de tout recommencer, surtout si je n'ai pas identifié le problème, celui-ci risquerait de ce reproduire

Voici un extrait de mon fichier, faites juste une copie de sélection de lignes puis insérez, vous mesurerez ainsi la lenteur.

Merci d'avance
 

Pièces jointes

  • Classeur1.xlsm
    546.7 KB · Affichages: 12
Dernière édition:
Solution
Bonjour,

En utilisant la touche F5 on s'aperçoit que la dernière cellule est XAH236.

Supprimez les colonnes CG:XAH, le copier-coller ne posera plus de problème.

En passant qu'est-ce que c'est que cette horreur :
VB:
With Target
    If .Count > 1 Or .Address <> "A:C1" Then Exit Sub
"A:C1" n'a jamais été la référence (absolue) d'une plage !!!

A+

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Cédric,
Difficile de corréler votre macro avec la PJ.
Pourquoi s'arrête t-on à la ligne 80 ? Cette ligne semble quelconque par rapport aux autres.
Pourquoi regarde t-on la colonne 87 qui est la colonne "CI" ? cette colonne a l'air quelconque.
Si on supprime des lignes, supprime t-on aussi les boutons qui sont dans ces lignes ? Du genre "Mise en page"
L'insertion de lignes prend du temps surement à cause de la multitude de boutons. Pourquoi y en a t-il tant ?
Ne serait pas plus simple d'utiliser des cellules avec un contrôle Worksheet_SelectionChange, ce serait beaucoup plus rapide, je pense.
Voir PJ pour l'exemple avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [T:T]) Is Nothing Then
        If Target <> "Mise en forme" Then Exit Sub
        L = Target.Row
        Range("A" & L & ":R" & L).Interior.Color = RGB(255, 230, 150) ' Pour l'exemple
    End If
Fin:
End Sub
Ca supprimerait tous les boutons "Mise en forme", et ça résoudrait votre problème de lenteur à l'insertion de lignes.
 

Pièces jointes

  • Classeur1 (7).xlsm
    604.1 KB · Affichages: 1

kiki29

XLDnaute Barbatruc
Salut, à tenter pour encadrer ta macro
Depart
Macro
Fin

VB:
Public Sub Depart()
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.AskToUpdateLinks = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
End Sub

Public Sub Fin()
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.AskToUpdateLinks = True
    Application.DisplayAlerts = True
    Application.Calculation = xlAutomatic
End Sub
 

Cédric06400

XLDnaute Nouveau
Bonjour Cédric,
Difficile de corréler votre macro avec la PJ.
Pourquoi s'arrête t-on à la ligne 80 ? Cette ligne semble quelconque par rapport aux autres.
Pourquoi regarde t-on la colonne 87 qui est la colonne "CI" ? cette colonne a l'air quelconque.
Si on supprime des lignes, supprime t-on aussi les boutons qui sont dans ces lignes ? Du genre "Mise en page"
L'insertion de lignes prend du temps surement à cause de la multitude de boutons. Pourquoi y en a t-il tant ?
Ne serait pas plus simple d'utiliser des cellules avec un contrôle Worksheet_SelectionChange, ce serait beaucoup plus rapide, je pense.
Voir PJ pour l'exemple avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [T:T]) Is Nothing Then
        If Target <> "Mise en forme" Then Exit Sub
        L = Target.Row
        Range("A" & L & ":R" & L).Interior.Color = RGB(255, 230, 150) ' Pour l'exemple
    End If
Fin:
End Sub
Ca supprimerait tous les boutons "Mise en forme", et ça résoudrait votre problème de lenteur à l'insertion de lignes.
Merci pour votre réponse, ma macro ne s'effectue pas sur cette feuille, l'exemple donné est la juste pour que vous compreniez la lenteur du fichier. Avec un simple copier ligne et insérer cellule copier on s'aperçu de la lenteur de la manipulation. ce qui n'est absolument pas normal.

Désolé si j'ai compliqué en mettant cette macro. C'est pas elle le problème vu qu'elle fonctionne très bien sur l'ancienne version.

En tout cas je note l'amélioration de la macro pour la faire tourner plus vite.

Merci
 

Cédric06400

XLDnaute Nouveau
Salut, à tenter pour encadrer ta macro
Depart
Macro
Fin

VB:
Public Sub Depart()
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.AskToUpdateLinks = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
End Sub

Public Sub Fin()
    Application.ScreenUpdating = True
    Application.EnableEvents = True
    Application.AskToUpdateLinks = True
    Application.DisplayAlerts = True
    Application.Calculation = xlAutomatic
End Sub
Hello,
J'ai déjà essayé. Sans effet malheureusement.
Le fichier joint est un exemple simple.
C'est mon fichier qui a un problème .)
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Ce qui peut ralentir un classeur, c'est le nombre de MFC, ou le nombre d'objets posés sur une feuille.

As-tu vérifié ces deux points ?


Vu que ce n'est qu'un classeur-exemple, difficile de savoir si le vrai fichier a les mêmes problèmes...
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour,

En utilisant la touche F5 on s'aperçoit que la dernière cellule est XAH236.

Supprimez les colonnes CG:XAH, le copier-coller ne posera plus de problème.

En passant qu'est-ce que c'est que cette horreur :
VB:
With Target
    If .Count > 1 Or .Address <> "A:C1" Then Exit Sub
"A:C1" n'a jamais été la référence (absolue) d'une plage !!!

A+
 

Cédric06400

XLDnaute Nouveau
sertion de lignes prend du temps surement à cause de la multitude de boutons. Pourquoi y en a t-il tant ?

Bonjour,

En utilisant la touche F5 on s'aperçoit que la dernière cellule est XAH236.

Supprimez les colonnes CG:XAH, le copier-coller ne posera plus de problème.

En passant qu'est-ce que c'est que cette horreur :
VB:
With Target
    If .Count > 1 Or .Address <> "A:C1" Then Exit Sub
"A:C1" n'a jamais été la référence (absolue) d'une plage !!!

A+
Hello,
Voila ou était mon problème, toutes ces colonnes.
J'ai testé sur mon fichier test ca à l'air de fonctionner.
Merciiiiiiiiiiiiiiiiiiiiiiiii

En passant : pour le code j'ai pondu ça il y a des années. Il faut que je repenche dessus.
J'ai des compétence limités

Pour vous le code devrait tourner comment ?

Bien à vous
 

Cédric06400

XLDnaute Nouveau
Bonjour,

Ce qui peut ralentir un classeur, c'est le nombre de MFC, ou le nombre d'objets posés sur une feuille.

As-tu vérifié ces deux points ?


Vu que ce n'est qu'un classeur-exemple, difficile de savoir si le vrai fichier a les mêmes problèmes...
Oui, la solution semble avoir été trouvé, c'est le poids des colonnes qui clochait.
l'ancien version des fichier n'avait pas autant de colonne possibles, c'est la transformation entre ls version qui a générer ce bug.
 

Discussions similaires

Réponses
10
Affichages
477
Réponses
12
Affichages
220

Statistiques des forums

Discussions
313 276
Messages
2 096 760
Membres
106 744
dernier inscrit
sshkm16