XL 2016 Bordures et mise en forme VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sebastien450

XLDnaute Occasionnel
Bonjour,
J'ai le code suivant qui marche, mais je me demande si une optimisation est possible... ?

VB:
For x = 4 To 3500 Step 8 ' A partir du début par pas de 8 je fais de la mise en forme
    With Range(Cells(6, x), Cells(221, x))
    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    .Borders(xlEdgeLeft).Weight = xlHairline
    End With
Next x
For x = 6 To 222 Step 8 'par par de 8 je vais faire les doubles lignes
    With Range(Cells(x, 6), Cells(x, jour + 300)) 'A partir de la colonne du jour par pas de 8 je fais de la mise en forme
        .Borders(xlEdgeTop).LineStyle = xlDouble
        .Borders(xlEdgeTop).Weight = xlThick
    End With
Next x

Merci

Sébastien450
 
Chez moi cette macro s'exécute en 11,5 secondes :
VB:
Sub Bordures()
Dim n&
Application.ScreenUpdating = False
Cells.Borders.LineStyle = xlNone 'RAZ
With [D6:EDO221]
    For n = 1 To 217 Step 8
        .Rows(n).Borders(xlEdgeTop).LineStyle = xlDouble
    Next
    For n = 1 To 3497 Step 8
        .Columns(n).Borders(xlEdgeLeft).Weight = xlHairline
    Next
End With
End Sub
 
Bonsoir,

sur la base de la macro de @job75 :
VB:
Sub Bordures()
    Dim n&
    Dim p1 As Range, p2 As Range
    Set p1 = Range("D6")
    Set p2 = Range("D6")
    Application.ScreenUpdating = False
    With Range("D6:EDO221")
        .Borders.LineStyle = xlNone
        For n = 1 To 217 Step 8
            Set p1 = Union(p1, .Rows(n))
        Next
        For n = 1 To 3497 Step 8
            Set p2 = Union(p2, .Columns(n))
        Next
    End With
    p1.Borders(xlEdgeTop).LineStyle = xlDouble
    p2.Borders(xlEdgeLeft).Weight = xlHairline
    Application.ScreenUpdating = True
End Sub

Cordialement
 
Bonjour Roblochon,

Oui sur cet exemple en utilisant Union c'est plus rapide : 0,4 seconde.

Et cela parce qu'il n'y a pas trop de plages disjointes à unir.

Sur une plage plus grande, par exemple D6:EDO30000 :

- macro du post #3 => 46 secondes

- macro du post #4 => 70 secondes.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
102
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
79
Retour