Exécution de la macro trop longue
Résolu
Bastien
-
Bastien -
Bastien -
Bonjour,
j'ai créé une macro toute simple pour remplacer une cellule définie avec une formule par son résultat et faire ceci pour toutes les lignes de la colonne. Le problème que j'ai est qu'il y a près de 300 lignes pour l'instant est que le temps de calcul est trop long.
Je poste mon code ci-dessous:
Sub figer_index()
'
Range("S8").Select
Do While Not (IsEmpty(ActiveCell))
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(1, 0).Select
Loop
End Sub
Si quelqu'un a une idée pour optimiser ce code je le remercie grandement par avance
j'ai créé une macro toute simple pour remplacer une cellule définie avec une formule par son résultat et faire ceci pour toutes les lignes de la colonne. Le problème que j'ai est qu'il y a près de 300 lignes pour l'instant est que le temps de calcul est trop long.
Je poste mon code ci-dessous:
Sub figer_index()
'
Range("S8").Select
Do While Not (IsEmpty(ActiveCell))
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Offset(1, 0).Select
Loop
End Sub
Si quelqu'un a une idée pour optimiser ce code je le remercie grandement par avance
A voir également:
- Exécution de la macro trop longue
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro word - Guide
- Convertir chiffre en lettre excel sans macro ✓ - Forum Excel
2 réponses
Bonjour,
Essaie comme cela
A+
Essaie comme cela
Sub figer_index()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Range("S8:S" & Range("S" & Rows.Count).End(xlUp).Row)
.Copy
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Range("S1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
A+
Bonjour
peut-^tre le + rapide
peut-^tre le + rapide
Option Explicit
Sub figer_index()
Dim Derlig As Integer, Lig As Integer, T
Application.ScreenUpdating = False
Derlig = Columns("S").Find("*", , , , , xlPrevious).Row
T = Application.Transpose(Range("S8:S" & Derlig))
For Lig = 1 To UBound(T)
T(Lig) = T(Lig)
Next
Range("S8:S" & Derlig) = Application.Transpose(T)
End Sub
En tout cas merci de ton aide
encore + rapide quand m^me
ecore 1 fois, mes excuses pour avoir oser te pr^ter main forte, mais ca ne se reproduira plus
Ensuite, j'ai opté pour un traitement direct de la plage à traiter (pas de boucle).
Pour info, j'ai fais la manip en manuel sur 300 lignes (copie/collage spécial valeurs), le résultat est quasi immédiat.
A+