XL 2019 Arrondir angles des cellules, choisir taille et couleur du trait

pat66

XLDnaute Impliqué
Bonjour Le forum,

je souhaiterai arrondir le bord de certaines cellules, j'ai trouvé sur le forum cette macro qui fonctionne à merveille sauf que j'aimerai pouvoir choisir aussi le style de trait, la taille et la couleur, pensez vous que cela soit possible et si oui comment ? avec par exemple : LineStyle:=xlDashDot, Color:=RGB(255, 255, 255), Weight:=xlThick

un grand merci

Sub CelluleArrondie4()
With Selection
With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height)
.Fill.Transparency = 1
.Placement = xlMoveAndSize
End With
End With
End Sub

Pat66
 

laurent950

XLDnaute Barbatruc
Bonsoir @pat66

VB:
Sub CelluleArrondie4()
Dim shp As Shape
    Set shp = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, 50, 50, 100, 100)
'Exemple ci-dessous :
With shp
    .Left = 40 ' .................................. Exemple Change Position Gauche
    .Top = 40 ' ................................... Exemple Change Position Sommet
    .Width = 125 ' ................................ Exemple Change Largeur
    .Height = 125 ' ............................... Exemple Change Hauteur
    .Fill.ForeColor.RGB = RGB(0, 255, 0) ' ........ Exemple Change Couleur (Vert) Couleur de la forme
    .Line.ForeColor.RGB = RGB(224, 0, 0) ' ........ Exemple Change Couleur (Rouge) Ligne de contour de la forme
    .Line.DashStyle = xlDashDot ' ................. Exemple Type de Ligne Pointillé
    .Fill.Transparency = 1 ' ...................... Exemple Transparence de la forme (sauf la ligne de contour)
    .Placement = xlMoveAndSize ' .................. Exemple L'objet est déplacé et redimensionné avec les cellules.
End With
End Sub
 

job75

XLDnaute Barbatruc
Si vous ne voulez pas utiliser la fenêtre "Taille et propriétés" il paraît difficile de choisir.

Il y aura donc toujours le même code pour la couleur, la largeur et le type.

Faites fonctionner l'enregistreur de macro pour récupérer ce code.
 

patricktoulon

XLDnaute Barbatruc
bonsoir
VB:
'la couleur de trait
'peut être exprimée de toute les manières
'qui sont possibles en vba (rgb /long / hexa / etc)
'-------------------------
'l'arrondi de 0 a 100
100 = le rayon = a la moitié du plus petit coté
'-------------------------
Style trait
'1 = plein
'2 = pointillet point
'4 = pointillet trait
'ou les constantes XL
'------------------------

Sub test()
'Argument     [range]    ,    [couleur du trait]    ,    [pourcentage de l'arrondi de 0 à 100]   ,   [style du trait]
    roundCornerBorderArround [B5:C8], vbRed, 20, 4
End Sub


Function roundCornerBorderArround(cel As Range, Optional coul As Long = 0, Optional RoundCorner As Long = 1, Optional LinXStyle As Long = xlDashDot)
    Dim shap As Shape
    Set shap = ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, cel.Left, cel.Top, cel.Width, cel.Height)
    With shap
        .Line.ForeColor.RGB = coul
        .Line.DashStyle = LinXStyle   
        .Fill.Visible = msoFalse    'pour pouvoir quand meme selectionner les cellules
        .Placement = xlMoveAndSize   
        .Adjustments(1) = RoundCorner / 100
    End With
End Function
demo7.gif


Enjoy
 

pat66

XLDnaute Impliqué
bonjour le fil, le forum

un grand merci pour votre aide , voici la solution retenue, un mix des solutions de Laurent950 et patricktoulon, que je salue au passage

Sub CelluleArrondie4()
With Selection
With ActiveSheet.Shapes.AddShape(msoShapeRoundedRectangle, .Left, .Top, .Width, .Height)
.Fill.ForeColor.RGB = RGB(200, 0, 0) ' Change Couleur de la forme
.Line.ForeColor.RGB = RGB(255, 255, 255) ' ........ ' Change Couleur Ligne de contour de la forme
.Line.DashStyle = msoLineDashDot ' Type de Ligne Pointillé
.Fill.Transparency = 1 ' Transparence de la forme (sauf la ligne de contour)
.Placement = xlMoveAndSize ' L'objet est déplacé et redimensionné avec les cellules.
.Fill.Visible = msoFalse 'pour pouvoir quand meme selectionner les cellules
.Adjustments(1) = RoundCorner / 100 ' 100 = le rayon = a la moitié du plus petit coté
End With
End With
ActiveCell(0, 0).Select 'pour éliminer la sélection de la forme
End Sub

belle journée à tous
 

Discussions similaires

S
Réponses
0
Affichages
5 K
Stéphane
S

Statistiques des forums

Discussions
314 653
Messages
2 111 579
Membres
111 207
dernier inscrit
max008