Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Re


@rastafouette
J'ai pas mieux, mais pire
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PLAGE As Range, VERIF
Set PLAGE = Range("d80:x110")
If Not Application.Intersect(Target, PLAGE) Is Nothing Then
VERIF = Application.WorksheetFunction.CountA(PLAGE)
Select Case VERIF
Case 651
MsgBox "Saisie compléte!"
Case Else
MsgBox "Saisie incompléte!", vbCritical
End Select
End If
End Sub
De quoi jeter son PC par la fenêtre
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,
dans les motifs tu as aussi hachuré, ou des points plus légers, ça reste en MFC.
Bien sûr les utilisateurs doivent connaitre le code, info simple à faire passer.

Sinon tant qu'à mettre du vba, autant verrouiller en plus la cellule en empêchant sa sélection. Ca sécurise ta feuille.
eric
 

Phil69970

XLDnaute Barbatruc
@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 ????
        End With
    Next Cell
End If
End Sub

Tu travailles avec des bourrins et encore c'est la version soft

et comme le dit Staple
Effectivement, ca pique les yeux
C'est violent
Je viens de tester et j'en ai attrapée une migraine !

Et dans la série encore plus violent il y a ceci :
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
    '*** Pour supprimer l'existant la 1ere fois si tu ne pars pas d'une feuille vierge !!!!
    Plage.Borders(xlDiagonalUp).LineStyle = xlNone
    Plage.Borders(xlDiagonalDown).LineStyle = xlNone
    '****
    Plage.Interior.ColorIndex = xlNone
    For Each Cell In Plage.SpecialCells(xlCellTypeBlanks)
        With Cell
            .Interior.ColorIndex = 1
        End With
    Next Cell
End If
End Sub

Et tu es sur qu'ils comprendront bien ce que cela veux dire !!!
Il faut que visuellement, ça se comprenne tout de suite, même pour celui qui ne connait pas, sans avoir besoin de donner d'explications

Merci de ton retour
 

Staple1600

XLDnaute Barbatruc
Bonsoir

@Phil69970
Il n'y a pas besoin de boucle ,non ?
Ou il y a un truc qui m'échappe
Code:
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
    '*** Pour supprimer l'existant la 1ere fois si tu ne pars pas d'une feuille vierge !!!!
'Plage.Borders(xlDiagonalUp).LineStyle = xlNone
'Plage.Borders(xlDiagonalDown).LineStyle = xlNone
Plage.Interior.ColorIndex = xlNone
Plage.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 1
End If
End Sub

Ci-dessous la version à ne pas tester
(risque de dommage sur le nerf optique)
VB:
'La macro originale est de Phil69970
'L'ajout futile et gagesque, c'est bibi
'A ne pas utiliser en milieu professionnel
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.Interior.ColorIndex = xlNone
    For Each Cell In Plage.SpecialCells(4)
        With Cell
        Randomize 1600
            .Interior.Color = RGB(225 * Rnd, 255 * Rnd, 255 * Rnd)
        End With
    Next Cell
End If
End Sub
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…