Excel VBA - Problème loop

Résolu
Bonjour,

J'ai un problème avec cette macro, qui fait une ligne grasse à partir de la ligne 6, à chaque 2e ligne. Le loop prend trop de temps, sûrement puisque je le fais une cellule à la fois. Y-a-t'il un code qui va permettre une exécution plus rapide ?

Sub Macro1()

Dim k As Integer
Dim l As Integer
Dim m As Integer

k = 28
l = 6

Do While l <= Range("a4").End(xlDown).Row
For m = 1 To k
Cells(l, m).Select
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Next m
l = l + 2
Loop

End Sub

Merci

3 réponses

  1. Bonjour sygmajf99

    Essaie cette macro qui semble t-il donne le même résultat que celle que tu as proposée, mais tu devrais gagner du temps.

    Sub test()

    Dim m As Integer

    Application.ScreenUpdating = False

    For m = 6 To 28 Step 2
    Rows(m & ":" & m).Select
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlMedium
    .ColorIndex = xlAutomatic
    End With
    Next m
    Application.ScreenUpdating = True

    End Sub

    Tiens moi au courant.

    cdlmt
    0
    1. Contributeur
      Bonjour,
      Sub Macro1()
      
      Dim col As Integer
      Dim lig As Integer
      dim derlig As integer
      col = 28
      lig = 6
      
      derlig=Range("a4").End(xlDown).Row
      Application.ScreenUpdating = False
      Do While lig <= derlig
          With Range(Cells(lig, 1), Cells(lig, col)).Borders(xlEdgeBottom)
              .LineStyle = xlContinuous
              .Weight = xlMedium
              .ColorIndex = xlAutomatic
          End With
      lig = lig + 2
      Loop
      
      End Sub
      


      devrait aller +vite (on peut-^tre faire mieux mais...)
      0
      1. Contributeur
        Bonsoir michel et tous les autres,

        Michel, Application.ScreenUpdating = True est oublié, ou c'est que l'on peut s'en passer car rétabli en sortant de la macro ?
        Bonne année à tous :)
        eric
        0
      2. Contributeur
        Bonjour Eriic et tout le monde
        c'est rétabli en sortant de la macro, attention toutefois si la la macro ne rend pas la main au systeme
        source:
        http://xcell05.free.fr/pages/prog/accvba.htm#ScreenUpdating
        0
      3. Contributeur
        Re,

        Je me doutais d'un truc comme ça.... ;-)
        eric
        0
    2. AGI67 : Merci, mais ton code sélectionnait les lignes entières et les 28 premières lignes. Moi je voulais les 28 premières colonnes, et les lignes jusqu'à
      Range("a4").End(xlDown).Row

      michel_m : Tout baigne, et c'est rapide comme l'éclair.

      Merci à vous 2.

      Jean-François
      0