XL 2016 Bordures et mise en forme VBA

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
 

job75

XLDnaute Barbatruc
Bonjour sebastien450,

Bizarre le résultat obtenu, vous êtes sûr que c'est ce que vous voulez ?

Perso je m'arrangerais pour qu'il y ait concordance des bordures.

A+
 

job75

XLDnaute Barbatruc
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
 

Roblochon

XLDnaute Barbatruc
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
 

job75

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

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas