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

  • 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é
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
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
 
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
 
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
 
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
 
- 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

Discussions similaires

Réponses
0
Affichages
1 K
Réponses
37
Affichages
4 K
Retour