XL 2016 vba trop lent en execution

julien741

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous car j'ai une macro qui était assez rapide il y a 2 semaines, mais aujourd'hui elle mets prés de 10minutes a se faire.
En soit elle fonctionne mais très lente, pourriez-vous m'aider soit à la simplifier ou me dire ce qu'il faudrait faire pour la rendre plus rapide?

Ci-joint le fichier entier.

Merci par avance votre aide.

Cdt.
Julien.
 

Pièces jointes

  • Fiche à remplir entier pour 1jrs V7.zip
    672.5 KB · Affichages: 9
Solution
Re

1)
Tu supprimes toutes tes formules en trop ==> donc toutes les formules après la ligne 289
==> J'en ai vu juste sur les colonnes A,B,C et D

Mets les formules en fonction des lignes que tu as besoin.

2)
Tu copies ce code en fin de macro transfert ==> Juste avant "End Sub"
VB:
Dim DerligA&, DerligE&
With Sheets("BDD")
    DerligA = .Range("A" & Rows.Count).End(xlUp).Row
    DerligE = .Range("E" & Rows.Count).End(xlUp).Row
    .Range("A" & DerligA & ":D" & DerligE).FillDown
End With

Et toutes tes formules (Colonnes A,B,C, et D ) seront copiés à la juste "longueur" en fonction de chaque transfert

*Cette solution vient à la place de mon post #9

*Merci de ton retour...

Phil69970

XLDnaute Barbatruc
Bonjour @julien741

Cela bloque à partir d'ici
For L = 11 To 68 Step 3 ' Pour tout le tableau
If Cells(L, "E") <> "" Then ' Tant qu'en E on a une valeur
==> F.Cells(dl, "E") = [B8] ' Date
et même si je remplace par
Sheets("BDD").Range("E290") = [B8]
ou par
Sheets("BDD").Range("E290") = Sheets("FPE1").Range("B8").Value
C'est toujours lent

par contre si j'écris dans une nouvelle feuille
Sheets("Feuil1").Range("E290") = Sheets("FPE1").Range("B8").Value
C'est instantané donc j'en conclu qu 'il y a un pb dans ta feuille BDD
==> Peut être il te faudra la refaire ...

*Pour la remarque de Bruno tu réédites ton post et tu mets le titre en minuscule ce n'est pas la peine d'en refaire 1 nouveau car tu auras un doublon

*Merci de ton retour

@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re

@julien741

1)
J'ai vu que dans ta feuille BDD tu as des formules sur 35 000 lignes !!
Est ce raisonnable quand ta BDD ne comporte que ..... 290 lignes
Non bien sur !!! Mais tu le savais déjà ... ;)
Mets les formules en fonction des lignes que tu as besoin.
Si j'ai compris à chaque transfert tu copies au max 68 lignes .....

2)
En début de macro "Transfert" tu peux mettre
Application.Calculation = xlCalculationManual

Et en fin de macro "Transfert" tu remets tout en place
Application.Calculation = xlCalculationAutomatic

@Phil69970
 

julien741

XLDnaute Nouveau
Re,

J'ai mit 35000 lignes c'est pour l'enregistrement des données pour une année de production.
J'ai refait l'onglet il y a du mieux, mais elle met encore pas mal de temps.
Je vais rajouté les 2 codes en début et fin de macro et je te redit.

P.I : j'ai signalé le 2eme post et c'est bien supprimer, merci pour le conseil.

Cdt.
Julien.
 

Pièces jointes

  • Fiche à remplir entier pour 1jrs V7.zip
    543.7 KB · Affichages: 3

Phil69970

XLDnaute Barbatruc
Re

1)
Tu supprimes toutes tes formules en trop ==> donc toutes les formules après la ligne 289
==> J'en ai vu juste sur les colonnes A,B,C et D

Mets les formules en fonction des lignes que tu as besoin.

2)
Tu copies ce code en fin de macro transfert ==> Juste avant "End Sub"
VB:
Dim DerligA&, DerligE&
With Sheets("BDD")
    DerligA = .Range("A" & Rows.Count).End(xlUp).Row
    DerligE = .Range("E" & Rows.Count).End(xlUp).Row
    .Range("A" & DerligA & ":D" & DerligE).FillDown
End With

Et toutes tes formules (Colonnes A,B,C, et D ) seront copiés à la juste "longueur" en fonction de chaque transfert

*Cette solution vient à la place de mon post #9

*Merci de ton retour

@Phil69970
 
Dernière édition:

julien741

XLDnaute Nouveau
Bonjour Phil,
Désolé pour cette attente, mais j'était pas à l'entreprise cette semaine pour l'essayer, je viens de faire un essai ce matin et la macro est plus rapide, j'ai fais quelques adaptations mais ce que tu m'a donnée fonctionne bien mieux.
Merci du coups de main.
Cdt.
Julien.
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 122
Membres
112 666
dernier inscrit
Coco0505