écourter le traitement VBA

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

B

BBdoc

Guest
Bonjour,

Voilà mon problème, j'ai fait une petite macro avec l'aide du forum pour résoudre certain problème que j'ai rencontré, la macro fonctionne très bien, mais quand je viens pour traiter une vrai nomenclature d'environ 2000 lignes, ça me prend une éternité (environ 10 minutes)
Donc je voulais savoir si j'avais correctement monter ma macro ou j'ai fait quelques erreurs de programmation et c'est pour cela que c'est si long.

Merci par avance de vos réponses.
 

Pièces jointes

Re : écourter le traitement VBA

Bonjour,

Euh, on veut bien, mais c'est quoi le but de ta macro?

Parce que les formules que tu injectes en début de code, excuse, mais tout le monde ne s'appelle pas Monique, Tibo ou Hoerwind....(scusez, si j'en ai oublié...)

Plus sérieusement, si tu nous donnais le but de ton code, on pourrait peut-être essayer de t'aider...

Bon courage
 
Re : écourter le traitement VBA

Bonjour,

Effectivement, à mon avis, il y a du temps à gagner là : plutôt que de mettre une formule puis en remplacer un morceau, autant la mettre directement bonne avec :

dim li3 as integer
li3 = range("B65536").end(xlup).row

et en consrtuisant la formule avec des

"=SOMMEPROD(....$B$" & li3 & ";B4)>0...."

Sinon, juste une remarque : c'est bien de commenter le code mais choisis bien tes commentaires parce que "'dim bidule 'définition de bidule" c'est de la perte de temps, par contre un "' calcule le total de chaque sous famille" ou "remplace le numéro de ligne dans les formules types" serait un peu plus utile.

@+
 
Re : écourter le traitement VBA

Bonjour BBdoc, bhbh, 2passage,
La macro sans aucun select. Ca devrait gagner du temps.
Cordialement
EDIT:
Maintenat que j'ai eu le temps de revenir sur le code, Je pense que cette version sera plus rapide que celle du fichier:
VB:
Sub Nettoyage2003test()
Application.ScreenUpdating = False
Dim li As Long
li = Range("B" & Application.Rows.Count).End(xlUp).Row + 1
Range("m5:m" & li - 1).FormulaLocal = "=SI(ESTERREUR(RECHERCHEV(E5;'données'!$A:$B;2;FAUX));SOMMEPROD(DECALER(B5;1;11;SI(NB.SI(B6:$B$" & li & ";B5)>0;EQUIV(B5;B6:$B$" & li & ";0)-1;NBVAL(B6:$B$" & li & ")))*(DECALER(B5;1;;SI(NB.SI(B6:$B$" & li & ";B5)>0;EQUIV(B5;B6:$B$" & li & ";0)-1;NBVAL(B6:$B$" & li & ")))=CAR(CODE(B5)+1))*(DECALER(B5;1;5;SI(NB.SI(B6:$B$" & li & ";B5)>0;EQUIV(B5;B6:$B$" & li & ";0)-1;NBVAL(B6:$B$" & li & ")))));RECHERCHEV(E5;'données'!$A:$B;2;FAUX))"
Range("N2") = li
Range("M2").FormulaLocal = "=SOMMEPROD((DECALER(B4;1;11;SI(NB.SI(B5:$B$" & li & ";B4)>0;EQUIV(B4;B5:$B$" & li & ";0)-1;NBVAL(B5:$B$" & li & " )))*(DECALER(B4;1;;SI(NB.SI(B5:$B$" & li & ";B4)>0;EQUIV(B4;B5:$B$" & li & ";0)-1;NBVAL(B5:$B$" & li & ")))=CAR(CODE(B4)+1))*(DECALER(B4;1;5;SI(NB.SI(B5:$B$" & li & ";B4)>0;EQUIV(B4;B5:$B$" & li & ";0)-1;NBVAL(B5:$B$" & li & "))))))"
With Range("B4:B" & li)
    .Replace what:="Niv.", replacement:="A"
    .Replace what:="Niv", replacement:="A"
    .Replace what:=".1", replacement:="B"
    .Replace what:="..2", replacement:="C"
    .Replace what:="...3", replacement:="D"
    .Replace what:="....4", replacement:="E"
    .Replace what:=" ", replacement:=""
    .HorizontalAlignment = xlCenter
End With
With Range("E4:E" & li)
    .Replace what:="wm.", replacement:=""
    .Replace what:=" ", replacement:=""
    .Replace what:="wp.", replacement:=""
    .HorizontalAlignment = xlCenter
End With
 
Range("M4:M" & li).NumberFormat = _
        "_-* #,##0.00 _-;-* #,##0.00 _-;_-* ""-""?? _-;_-@_-"
Range("B5").Activate
With Sheets("Nomenclature").Range("B5:M" & li - 1)
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlExpression, Formula1:="=$B5<$B6"
    .FormatConditions(1).Font.Bold = True
End With
Application.ScreenUpdating = True
End Sub
Cordialement
 

Pièces jointes

Dernière édition:
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
6
Affichages
638
  • Question Question
Microsoft 365 Ajout de données
Réponses
3
Affichages
571
Réponses
12
Affichages
973
Réponses
9
Affichages
746
Compte Supprimé 979
C
Réponses
4
Affichages
618
Retour