Macro VBA très lente

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. Contributeur
    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
    1. 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 


      @+