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

crocrocro

XLDnaute Occasionnel
Et puisqu'on en est dans le "open bar", une proposition très artisanale 🤪
un film transparent appliqué sur l'écran, une croix au feutre effaçable sur les cellules concernées et bien sûr, verrouiller le zoom et le scroll !
Concernant ma remarque précédente,
Encore une bizarrerie (peut-être quelqu'un connait la raison ...) d'excel ?
j'ai bien une petite idée : MS ne propose pas les diagonales au Menu, mais peut-être uniquement à la Carte (Gold de préférence 🥳) .
Perso,avec ma Carte 2016 Famille et Étudiant, je n'ai droit qu'au Menu Enfant 😪
 

rastafouette

XLDnaute Occasionnel
wooww !!! quel engouement !! 😳😂 Je ne pensais pas avoir autant de réponses !

Déjà, une réponse à ta remarque, Staple :
là ou une MFC suffirait (une couleur de fond en guise de croix,
C'est bien ce que j'ai déjà fait, des cases grisées, mais certaines personnes n'ont pas bien compris (si si...🤷‍♀️) , donc comme le problème se réitèrera toutes les semaines, ça va pas le faire. D'où la solution de la case barrée avec les diagonales, qui est manifestement une solution beaucoup plus claire et visuelle.

En tous cas, merci à tous, je regarderai en détail vos solutions dès que j'aurai récupéré mes neurones demain.

Bonne nuit !
 

rastafouette

XLDnaute Occasionnel
En général dans les MFC, avec bordures il faut travailler en "logique inverse", c'est-à-dire mettre dans la feuille les bordures que l'on aurait naturellement mises dans la MFC et réciproquement.

Donc ici, tu mets tes diagonales dans ta feuille et tu crées une MFC pour les enlever. 😉
Bon, ma curiosité est plus forte que mon sommeil.
Cette idée ne fonctionne pas 😢🤷‍♀️
 

rastafouette

XLDnaute Occasionnel
Re

Staple
Et pour avoir les 2 diagonales il suffit de demander
Après canada dry ou eau ferrugineuse c'est selon le gout de chacun 🙃
L'essentiel c'est que le demandeur retrouve ses petits .... 🤣
la canada dry v2 fonctionne chez moi, effectivement dès qu'on mets un chiffre <10 en colonne A.
Cependant, si je remplis la case B15, G11 ou autre, les diagonales en colonne A s'effacent. 🤷‍♀️ 🤔

(Pour moi ce sera une triple karmeliet, merciiiii 😂)
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

@rastafouette
En écho à ton message#17, si on pouvait voir un exemple anonymisé de ton classeur.
(pour appréhender sa structure et son fonctionnement)
On pourrait (ou pas) te suggérer des alternatives.

[digressions dominicales et matinales]
rastafouette à dit:
mais certaines personnes n'ont pas bien compris
1) l'ergonomie du classeur est la source de l'incompréhension
2) on n'a pas été assez pédagogue
3) elles sont réfractaires aux tableurs
4) rajouter du VBA pourrait les plonger dans la totale incompréhension en cas de bug
[/digressions dominicales et matinales]

Question subsidiaire
Combien de cellules seront crucifiées ?
Si le nombre est important, la taille du fichier grandira-t-elle en conséquence.
 

Staple1600

XLDnaute Barbatruc
Re

@rastafouette
Autre suggestion VBA
(utilisable ou pas selon la structure du classeur original)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target < 10 Then
Target.Offset(, 1) = ChrW(&H274C)
Target.Offset(, 1).Font.Color = QBColor(2) 'gorilla.bas tribute ;-)
End If
End Sub
Et une version qui fait mal aux yeux ;)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target < 10 Then
With Target.Offset(, 1)
    .Value = ChrW(&H274C)
    .Font.Color = QBColor(2)
    .Font.Bold = True
    .Interior.Color = vbRed
End With
End If
End Sub
 

rastafouette

XLDnaute Occasionnel
Bonjour le fil

1) l'ergonomie du classeur est la source de l'incompréhension
2) on n'a pas été assez pédagogue
3) elles sont réfractaires aux tableurs
4) rajouter du VBA pourrait les plonger dans la totale incompréhension en cas de bug
[/digressions dominicales et matinales]
Le souci n'est même pas là. Je suis seule à maniper le xlsx. Le tableau lui est imprimé chaque semaine. Et une case "juste" grisée, même foncée (déjà fait semaines dernières) n'est pas aussi claire qu'une case rayée diagonale (qui, elle, signifie manifestement mieux le "non") 🤷‍♀️ 😩 => sources d'erreurs
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 et sans trop changer de l'ancien modèle : peu peu de marge de manœuvre. => rayée diagonales

Je regarde vos solutions du #21 et #23

Merci merci merci ! 🙏
 

crocrocro

XLDnaute Occasionnel
Bonsoir le fil,
et en jouant avec les motifs de remplissage (accessibles avec les MFC) comme ceci par exemple :
1728235457156.png
 

rastafouette

XLDnaute Occasionnel
@rastafouette

La V3 qui corrige le problème ;)

Merci de ton retour
Merci Phil, j'ai réussi à l'adapter sur ma plage :

VB:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim i&, j&


If Not Application.Intersect(Target, Range("d80:x110")) Is Nothing Then
    Range("d80:x110").Borders(xlDiagonalUp).LineStyle = xlNone
    Range("d80:x110").Borders(xlDiagonalDown).LineStyle = xlNone
    For i = 80 To 110
        For j = 4 To 24
            If Cells(i, j) = "" Then
                    Cells(i, j).Borders(xlDiagonalUp).LineStyle = xlContinuous
                    Cells(i, j).Borders(xlDiagonalDown).LineStyle = xlContinuous
                    Cells(i, j).Borders(xlDiagonalDown).Weight = xlThick
            End If
        Next j
    Next i
End If
End Sub

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

Merci encore à tous
 

Statistiques des forums

Discussions
314 719
Messages
2 112 178
Membres
111 452
dernier inscrit
christine64