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

XL 2010 Formule prend beaucoup de temps pour s activer

  • Initiateur de la discussion Initiateur de la discussion IMRANE
  • 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 !

IMRANE

XLDnaute Occasionnel
Bonjour le forum
Svp j ai une formule qui prend presque une minute pour s activer je sais pas a cause de quoi
si quelqu un peut m aider a résoudre ce problème j ai mis un fichier excel joint pour éclairssir le cas
et Merci le forum
 

Pièces jointes

Bonjour Imrane,
Un essai en PJ, je suis passé par deux arrays ce qui est infiniment plus rapide.
A tester.

NB: Après mesures sur mon PC, je passe de 31s à 0.25s soit 124 fois plus rapide.
Regardez comment marche les arrays, c'est sympa.
 

Pièces jointes

Dernière édition:
Bonjour.
Je l'ai écrit donc je poste :
VB:
Option Explicit
Sub Copier()
   Dim TSrc(), TCbl(), LSrc As Long, LCbl As Long, C As Integer
   TSrc = Feuil2.ListObjects("T_LIVRAISONS_Livraisons").DataBodyRange.Value
   ReDim TCbl(1 To UBound(TSrc, 1), 1 To 8)
   For LSrc = 1 To UBound(TSrc)
      If TSrc(LSrc, 24) Like "COMMANDE*" Then
         LCbl = LCbl + 1
         For C = 1 To 7: TCbl(LCbl, C) = TSrc(LSrc, C): Next C
         TCbl(LCbl, 8) = TSrc(LSrc, 24)
         End If
      Next LSrc
   TableauRetaillé(Feuil13.ListObjects("Tableau16"), LCbl) = TCbl
   End Sub
Property Let TableauRetaillé(ByVal LOt As ListObject, Optional ByVal LMax As Long, TVals())
   Dim Trop As Long, CMax As Long, TFml(), F As Long
   If LMax = 0 Then LMax = UBound(TVals, 1)
   Trop = LOt.ListRows.Count - LMax
   If Trop > 0 Then
      LOt.ListRows(LMax + 1).Range.Resize(Trop).Delete xlShiftUp
   ElseIf Trop < 0 And LMax + Trop > 1 Then
      LOt.ListRows(LMax + Trop).Range.Resize(-Trop).Insert xlShiftDown, xlFormatFromLeftOrAbove
      End If
   If LMax = 0 Then Exit Property
   ReDim TFml(1 To LOt.ListColumns.Count)
   For F = 1 To UBound(TFml)
      With LOt.HeaderRowRange(2, F)
         If .HasFormula Then TFml(F) = .Formula2R1C1 Else TFml(F) = Null
         End With: Next F
   LOt.HeaderRowRange.Offset(1).Resize(LMax).Value = TVals
   For F = 1 To UBound(TFml)
      If Not IsNull(TFml(F)) Then LOt.ListColumns(F).DataBodyRange.Formula2R1C1 = TFml(F)
      Next F
   End Property
 
Bonjour Imrane,
Un essai en PJ, je suis passé par deux arrays ce qui est infiniment plus rapide.
A tester.

NB: Après mesures sur mon PC, je passe de 31s à 0.25s soit 124 fois plus rapide.
Regardez comment marche les arrays, c'est sympa.
Merci beaucoup Sylvanu
La modification est reussi ca fonctionne tres rapidement
Merci une autre fois Sylvanu et le Forum
 
Bonjour Dranreb Merci pour ton aide precieux
[/QUOTE]
La fonction est maintenant tres rapide Merci une autre fois
 
- 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

Discussions similaires

Réponses
1
Affichages
257
  • Question Question
XL 2021 formule
Réponses
3
Affichages
329
Réponses
2
Affichages
263
Réponses
16
Affichages
995
  • Question Question
XL 2010 messagebox
Réponses
8
Affichages
799
Réponses
7
Affichages
893
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…