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

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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.
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour