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


    @+
    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