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

Microsoft 365 Macro qui change l'épaisseur du contour d'une forme

pat66

XLDnaute Impliqué
Bonsoir le forum,

j'essaie de rédiger une macro qui modifie l'épaisseur et la couleur d'une forme selon le contenu de D5, mais hélas je n'y arrive pas, pourriez vous me donner un coup de main s'il vous plait

La forme : Rectangle 1
La cellule qui contient "oui" : D5
SI D5 = "oui" : le contour de rectangle 1 = RGB(255, 160, 70), l'épaisseur = 10
Si D5 = "non" : le contour de rectangle 1 = RGB(255, 0, 0), l'épaisseur = 5

voici ce que j'ai fait, mais peut être qu'on peut simplifier avec : IIf ( expr , truepart , falsepart ), mais je n'y arrive pas

VB:
Sub Rectangle1_Cliquer()
If Feuil1.[D5] = "oui" Then
Feuil1.Shapes("Rectangle 1").OLEFormat.Object.Border.Color = RGB(255, 160, 70)
Feuil1.Shapes("Rectangle 1").Line.Weight = 10
Else
Feuil1.Shapes("Rectangle 1").OLEFormat.Object.Border.Color = RGB(255, 0, 0)
Feuil1.Shapes("Rectangle 1").Line.Weight = 5
End If
End Sub

merci d'avance pour votre aide et bonne soirée
 
Solution
Re

@pat66
Comme ceci ?
VB:
Sub Test_OK_b()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Rectangle 1")
Select Case Range("D5")
Case "oui"
shp.Line.ForeColor.RGB = RGB(255, 160, 70)
shp.Line.Weight = 10
Case Else
shp.Line.ForeColor.RGB = RGB(255, 0, 0)
shp.Line.Weight = 5
End Select
Range("D5") = "non"
End Sub

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

@pat66
Une syntaxe possible
VB:
Sub Test_OK()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Rectangle 1")
Select Case Range("D5")
Case "oui"
shp.Line.ForeColor.RGB = RGB(255, 160, 70)
shp.Line.Weight = 10
Case Else
shp.Line.ForeColor.RGB = RGB(255, 0, 0)
shp.Line.Weight = 5
End Select
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@pat66
Comme ceci ?
VB:
Sub Test_OK_b()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Rectangle 1")
Select Case Range("D5")
Case "oui"
shp.Line.ForeColor.RGB = RGB(255, 160, 70)
shp.Line.Weight = 10
Case Else
shp.Line.ForeColor.RGB = RGB(255, 0, 0)
shp.Line.Weight = 5
End Select
Range("D5") = "non"
End Sub
 

pat66

XLDnaute Impliqué
re,

j'ai modifié comme ceci, ca à l'air de fonctionner , qu'en pensez vous ?

VB:
Sub Test_OK_b()
Dim shp As Shape
Set shp = ActiveSheet.Shapes("Rectangle 1")
Select Case Range("D5")
Case "oui"
shp.Line.ForeColor.RGB = RGB(255, 160, 70)
shp.Line.Weight = 10
Case Else
shp.Line.ForeColor.RGB = RGB(255, 0, 0)
shp.Line.Weight = 5
End Select
If [D5] = "oui" Then [D5] = "non" Else [D5] = "oui"
End Sub
 

pat66

XLDnaute Impliqué
Bonjour le forum, le fil,

Phil69970, j'ai testé ta solution mais dans le cas présent cela ne convient pas exactement, car il faut aller sur D5 pour basculer entre oui et non, je vais utiliser la solution de Staple1600

Dans le même esprit :
pourrais tu m'aider à écrire correctement la syntaxe ci dessous car je n'y arrive pas, l'objectif étant le même, c'est à dire de modifier l'épaisseur du contour de "Ellipse 88092" selon que ("D10") soit = ou <> de Feuil62.Range("BC102")

sub contour()
Feuil1.Shapes("Ellipse 88092").Line.Weight = IIf(Feuil1.Range("D10").Value <> Feuil62.Range("BC102").Value, 10, 5)
end sub

merci beaucoup
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…