Macro VBA très lente

jonleyva Messages postés 4 Statut Membre -  
eriiic Messages postés 24581 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

2 réponses

  1. Gord21 Messages postés 928 Statut Membre 289
     
    Bonsoir,
    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 


    @+
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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 :
    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
    0