Macro VBA très lente
jonleyva
Messages postés
4
Statut
Membre
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
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
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Free connexion lente 4g ✓ - Forum Opérateurs & Réseaux mobiles
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