Microsoft 365 Bordures dans MFC

rastafouette

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à mettre des bordures dans une MFC, mais je ne peux pas sélectionner les diagonales, pour faire une croix dans la cellule. J'ai essayé sur plusieurs fichiers, même sur des nouveaux vides.
Est-ce normal ?
 
Solution
@rastafouette

Ce n'est pas forcément très beau🫣. Si vous avez mieux, je prends

Je te propose :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Cell As Range, Plage As Range
Set Plage = Range("D80:X110")
If Not Application.Intersect(Target, Plage) Is Nothing Then
    Plage.Borders(xlDiagonalUp).LineStyle = xlNone
    Plage.Borders(xlDiagonalDown).LineStyle = xlNone
    For Each Cell In Plage.SpecialCells(xlCellTypeBlanks)
        With Cell
            .Borders(xlDiagonalUp).LineStyle = xlContinuous
            .Borders(xlDiagonalDown).LineStyle = xlContinuous
            .Borders(xlDiagonalDown).Weight = xlThick ' <== Est ce vraiment utile et indispensable...

Staple1600

XLDnaute Barbatruc
Bonjour le fil

@rastafouette
Utilises Jeux d'icones et tu auras une croix directement
jeux.png
 

crocrocro

XLDnaute Impliqué
Bonjour le fil,
comme le fait remarquer Staple1600, dans une MFC les bordures diagonales ne sont pas accessibles.
Que ce soit directement sur la feuille ou par du code VBA
VB:
Sub MFCBordureDiagonales()

    Range("A1:A10").Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=A1=""x"""
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

    With Selection.FormatConditions(1).Borders(xlDiagonalDown)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.FormatConditions(1).Borders(xlDiagonalUp)
        .LineStyle = xlContinuous
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub
Encore une bizarrerie (peut-être quelqu'un connait la raison ...) d'excel ?
 

Staple1600

XLDnaute Barbatruc
Bonjour @crocrocro

Bizarrerie mise à part, la question dans la question pourrait être:
En quoi une croix est plus significative qu'une couleur pour distinguer une information d'une autre ?

Peut-être qu'un fichier exemple dés le premier message (et donc une vue concrète du problème posé) aurait pu nous aider à aiguiller le demandeur vers une voie alternative autre que la MFC. ?
... ou pas ;)
 

Staple1600

XLDnaute Barbatruc
Re

@TooFatBoy
Je m'adressais à @Phil69970 , non ?

Et je disais, sur le ton de l'humour, que la question parle de MFC or pas de MFC dans la proposition VBA

@Phil69970
Pour une croix, sans les bras comme disait Johnnny
Code:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaPlage As Range, i&, j&, Derlig&
Derlig = Range("A" & Rows.Count).End(xlUp).Row
Set MaPlage = Range("A1:A" & Derlig)
Columns(1).Borders(xlDiagonalUp).LineStyle = xlNone
If Not Application.Intersect(MaPlage, Range(Target.Address)) Is Nothing Then
    For i = 1 To Derlig
        If Range("A" & i) < 10 Then
            For j = 5 To 6
            With Range("A" & i)
                .Borders(j).LineStyle = 1
            End With
            Next j
        End If
    Next i
End If
End Sub
EDITION
J'ai posté sans voir ton dernier message


@rastafouette
Le code initial étant celui de @Phil69970, c'est lui qu'il faudra créditer. ;)
Pas moi.
Moi, j'ai juste fait une tite boucle ;)
 

Staple1600

XLDnaute Barbatruc
Re

@Phil69970
J'ai juste fait mumuse dans VBE, histoire de réchauffer mes doigts ;)
Perso, je vois pas l'intérêt d'écrire N lignes de code VBA pour faire une simple croix dans une cellule, là ou une MFC suffirait (une couleur de fond en guise de croix, et/ou le cas échéant une bordure Contour)
NB: je parle du problème posé (pas de ta réponse en VBA)
 

Staple1600

XLDnaute Barbatruc
Re

@Phil69970
C'est mieux comme cela ?
VB:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Column = 1 Then
T.Borders(5).LineStyle = T < 10
T.Borders(6).LineStyle = T < 10
End If
End Sub
PS: je crois qu'il y aura sans doute des effets de bords
Mais au moins mes doigts sont réchauffés ;)
EDITION
En peaufinant un peu plus
Code:
Private Sub Worksheet_Change(ByVal T As Range)
If T.Count > 1 Then Exit Sub
If Len(T) = 0 Then Exit Sub
If T.Column = 1 Then
T.Borders(5).LineStyle = T < 10
T.Borders(6).LineStyle = T < 10
End If
End Sub
Au final du VBA, oui mais de la MFC que nenni.
Cette histoire de Canada Dry m'a donné soif, m'en vais quérir plutôt une bière et autres denrées chez l'épicier du coin ;)
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki