Macro VBA très lente
jonleyva
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un code qui permet de remplir des cellules vide dans une plage. Le problème étant la vitesse d'execution.
Je précise qu'il s'agit quand même d'un fichier de 15 colonnes fois 115 000 lignes (Excel 2007)
Voici le code:
Sub Remplir()
Dim cel As Range
ActiveSheet.Range("A1").CurrentRegion.Select
For Each cell In Selection
If cell.Value = "" Then
cell.Value = cell.Offset(-1, 0).Value
Else
End If
Next cell
End Sub
Quelqu'un aurait une idée d'amélioration?
Je vous remercie tous d'avance
Cordialement
J'ai un code qui permet de remplir des cellules vide dans une plage. Le problème étant la vitesse d'execution.
Je précise qu'il s'agit quand même d'un fichier de 15 colonnes fois 115 000 lignes (Excel 2007)
Voici le code:
Sub Remplir()
Dim cel As Range
ActiveSheet.Range("A1").CurrentRegion.Select
For Each cell In Selection
If cell.Value = "" Then
cell.Value = cell.Offset(-1, 0).Value
Else
End If
Next cell
End Sub
Quelqu'un aurait une idée d'amélioration?
Je vous remercie tous d'avance
Cordialement
A voir également:
- Macro VBA très lente
- Pc tres lent - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
2 réponses
Bonsoir,
Tu peux essayer :
@+
Tu peux essayer :
Sub Remplir() Dim cel As Range ActiveSheet.Range("A1").CurrentRegion.Select Application.ScreenUpdating=False For Each cell In Selection If cell.Value = "" Then cell.Value = cell.Offset(-1, 0).Value End If Next cell Application.ScreenUpdating = True End Sub
@+
Bonsoir,
Une autre proposition, la lecture de données se faisant par bloc (par colonne) pour accélérer un peu plus si les trous ne sont pas majoritaires :
eric
Une autre proposition, la lecture de données se faisant par bloc (par colonne) pour accélérer un peu plus si les trous ne sont pas majoritaires :
Sub Remplir() Dim pl As Range, col As Long, lig As Long, datas Set pl = ActiveSheet.Range("A1").CurrentRegion Application.ScreenUpdating = False For col = 1 To pl.Columns.Count datas = pl.Columns(col) For lig = 2 To UBound(datas) If datas(lig, 1) = "" Then pl(lig, col) = pl(lig - 1, col) End If Next lig Next col Application.ScreenUpdating = True End Sub
eric