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 !
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.
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.
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
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.
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
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.
Un grand merci pour vos contributions.
Le problème est résolu.
Il venait de la transformation entre les différentes versions d'Excel et du nb de colonnes.
- 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