Accélérer le code car très lent

Cougar

XLDnaute Impliqué
Bonjour le forum,

Dans le fichier joint tronqué, normalement plus de 3000 lignes pour le moment, la durée est d'environ 10 sec. Serait-il possible de simplifier ce code pour qu'il soit plus rapide.

Je suis sur le réseau de l'entreprise et c'est, peut-être, la cause de la lenteur.

Merci
 

Pièces jointes

  • Test.xlsm
    37.1 KB · Affichages: 30

Lone-wolf

XLDnaute Barbatruc
Bonjour Cougar :), le Forum :)

Pourquoi ouvrir un autre poste pour le même fichier??:rolleyes: . Tu aurais pu faire la demande sur l'autre. Et je t'ai donné l'exemple de comment fallait écrire le code, parce-que avec tous ces select tu m'éttonne que ça traîne. Si tu dirais au juste ce que tu veux faire ça serait mieux. Ce que je ne comprends pas au début de la macro, je te donne un exemple simplifé d'après ce que je comprend.

D'abord tu met ceci

VB:
With Sheets("A")
    .Range("j1").EntireColumn.Insert xlToLeft
    .Range("j2").FormulaR1C1 = "=RC[-2]&"" - ""&RC[-1]"
    .Range("j2").AutoFill Destination:=.Range("j2:j5000"), Type:=xlFillDefault
    .Columns("j:j").Copy
    .Columns("j:j").PasteSpecial Paste:=xlPasteValues
   Application.CutCopyMode = 0
End With

Mais au lieu de copier-coller, tu écrit comme ceci
VB:
Sub test()
Dim derlig As Long, i As Long

With Sheets("A")
derlig = .Range("i" & Rows.Count).End(xlUp).Row
    For i = 2 To derlig
    .Range("j" & i).FormulaR1C1 = "=RC[-2]&"" - ""&RC[-1]"
    .Range("j" & i).Value = .Range("j" & i).Value
    Next i
End With
End Sub
'Au lieu de faire un AutoFill

ensuite

Columns("J:L").Select - Selection.Delete Shift:=xlToLeft. Tu peux m'expliquer? :rolleyes::confused:
 
Dernière édition:

Cougar

XLDnaute Impliqué
Bonjour Lone-Wolf, le forum,

Même fichier mais pas même problème. C'est pourquoi j'ai créé un autre sujet.

Merci pour tes solutions et pour les colonnes J:L c'est pour enlever les colonnes superflues car j'aurais d'autres calculs à faire avec ce fichier. Je garde seulement ce qui est nécessaire.

Encore une fois, merci.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Loup Solo
Pourquoi la boucle ? ;)
VB:
Sub test_II()
Dim derlig&
With Sheets("A")
    derlig = .Range("i" & Rows.Count).End(xlUp).Row
    With .[J2].Resize(derlig - 1)
        .FormulaR1C1 = "=RC[-2]&"" - ""&RC[-1]"
        .Value = .Value
    End With
End With
End Sub
 

Discussions similaires

Réponses
15
Affichages
486

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin