Que faire pour accélérer macro

chich

XLDnaute Occasionnel
Bonjour,

que faire pour accélérer ma macro

Sub ToggleButton3_Click()
Application.ScreenUpdating = False
ActiveCell.FormulaR1C1 = "10:00"
SELECTION.Copy
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
If Not ActiveCell.HasFormula And IsDate(ActiveCell.Text) Then _
If ActiveCell < 1 Then Cancel = True: ActiveCell = Format(ActiveCell + 14 / 48, "hh:mm")
ActiveCell.Offset(0, 3).Select
Load UserForm1
End Sub
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,
Peut-être ceci :

Code:
Sub ToggleButton3_Click()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
ActiveCell.FormulaR1C1 = "10:00"
SELECTION.Copy
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
If Not ActiveCell.HasFormula And IsDate(ActiveCell.Text) Then _
If ActiveCell < 1 Then Cancel = True: ActiveCell = Format(ActiveCell + 14 / 48, "hh:mm")
ActiveCell.Offset(0, 3).Select
Load UserForm1
Application.Calculation = xlCalculationAutomatic
End Sub

Bonne journée !
 

chich

XLDnaute Occasionnel
Bonjour à tous,
Peut-être ceci :

Code:
Sub ToggleButton3_Click()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
ActiveCell.FormulaR1C1 = "10:00"
SELECTION.Copy
ActiveCell.Offset(0, 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
If Not ActiveCell.HasFormula And IsDate(ActiveCell.Text) Then _
If ActiveCell < 1 Then Cancel = True: ActiveCell = Format(ActiveCell + 14 / 48, "hh:mm")
ActiveCell.Offset(0, 3).Select
Load UserForm1
Application.Calculation = xlCalculationAutomatic
End Sub

Bonne journée !
re
Merci pour votre interet
Encore plus lent
 

eriiic

XLDnaute Barbatruc
Bonjour,

il y a bien des trucs inutiles comme les .select, copier une valeur que tu viens de mettre (que tu connais donc) pour la coller à nouveau à coté etc, mais tout ça c'est peanuts devant le ActiveWorkbook.Save
Pose-toi la question de savoir si cette enregistrement est bien indispensable.
Si oui, à part t'acheter un SSD pas beaucoup de solution.
eric
 

chich

XLDnaute Occasionnel
Bonjour,

il y a bien des trucs inutiles comme les .select, copier une valeur que tu viens de mettre (que tu connais donc) pour la coller à nouveau à coté etc, mais tout ça c'est peanuts devant le ActiveWorkbook.Save
Pose-toi la question de savoir si cette enregistrement est bien indispensable.
Si oui, à part t'acheter un SSD pas beaucoup de solution.
eric
Bonjour
merci pur votre interet
l'enregistrement n'est pas une obligation pour les .select je ne sais pas comment les contourner
 

zebanx

XLDnaute Accro
Bonjour à tous,

@chich
Il est toujours plus "interprétable" de mettre un fichier avec un exemple sur une plage de ce que l'on veut faire parce que si vous dites que le code est lent avec le choix de deux cellules, c'est, pure hypothèse, qu'il doit y avoir une sélection bien plus longue qu'une ACTIVECELL.
Donc, en retirant l'usage des USF, et en se concentrant sur la partie uniquement de code, on peut contourner le SELECT, surtout si vous travaillez sur une ACTIVECELL.

Par exemple, et pour seul besoin de ce contournement.
--------
Sub heure()
ActiveCell.Value = 10 / 24
ActiveCell.NumberFormat = "h:mm"
If ActiveCell.NumberFormat = "h:mm" Then
ActiveCell.Offset(0, 1).NumberFormat = "h:mm"
ActiveCell.Offset(0, 1).Value = ActiveCell + 7 / 24
End If
End Sub
------

cdlt
zebanx
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 160
Membres
103 148
dernier inscrit
lulu56