VBA excel :Problème de bordure sous condition

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
Bonjour,

Je vous soumets un bout de code qui vise simplement à tracer des bordures horizontales dans un tableau, sous condition (à savoir que lorsque les cellules adjacentes de la première colonne sont identiques, pas de bordure). Ces cellules contiennent du texte.
Dim dercol2 As Byte
Dim derline2 As Byte
dercol2 = Range("B2").End(xlToRight).Column
derline2 = Range("B2").End(xlDown).Row

Dim u As Byte
Dim j As Byte

For u = 2 To derline2
If Cells(u, 2).Value <> Cells(u + 1, 2).Value & Cells(u, 2).Value <> Cells(u - 1, 2).Value Then
For j = 2 To dercol2
Cells(u, j).Select

With Selection
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    End With
    
  
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThick
        .ColorIndex = xlAutomatic
    End With
    
Next
End If
Next


Le résultat est que je trace des lignes horizontales partout dans mon tableau.
Je ne vois pas très bien ce qui peut rater...

Quelqu'un a t'il une idée ?

Merci

2 réponses

  1. madeliocustom Messages postés 42 Statut Membre 13
     
    Hello Jahawai,

    essaye ca :

    Sub tracedeslignes()

    Dim dercol2 As Byte
    Dim derline2 As Byte
    dercol2 = Range("B2").End(xlToRight).Column
    derline2 = Range("B2").End(xlDown).Row

    Dim u As Byte
    Dim j As Byte

    'ligne du haut
    For j = 2 To dercol2
    Cells(2, j).Select
    With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    Next

    'ligne du bas
    For j = 2 To dercol2
    Cells(derline2, j).Select
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    Next

    'les autres lignes
    For u = 2 To derline2
    If (Cells(u - 1, 2).Value <> Cells(u, 2).Value) Then
    For j = 2 To dercol2
    Cells(u, j).Select
    With Selection.Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    Next
    End If

    If (Cells(u + 1, 2).Value <> Cells(u, 2).Value) Then
    For j = 2 To dercol2
    Cells(u, j).Select
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    Next
    End If
    Next

    End Sub

    A+
    Madelio
    0
  2. Utilisateur anonyme
     
    Salut Madelio,

    Et merci beaucoup, effectivement, ça fonctionne.
    Bonne journée,

    Jahawai
    0