Excel VBA - Problème loop
Résolu
sygmajf99
Messages postés
18
Statut
Membre
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Excel VBA - Problème loop
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
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
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
Bonjour,
devrait aller +vite (on peut-^tre faire mieux mais...)
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...)