Associer formes à code couleur
Bonjour à toutes et à tous
D'après le fichier suivant
comment associer les formes geometriques au code de couleur ??
J'ai validé le gestionnaires de nom ...mais je coince après !!!
merci d(avance Bernard
Salut Bernard,
asso a écrit :comment associer les formes geometriques au code de couleur ??
Que veux-tu dire par là ? Quel est ton but réel ?
Cordialement.
NB : Sur ce Forum on considère que d'écrire en majuscules correspond à crier
Désolé je mets souvent en majuscules car ma vue n'est pas bonne
je souhaite pouvoir modifier les nombres ( 1 ou 2 ou 3) dans la colonne B2 à B9
pour modifier automatiquement les couleurs des formes ( de A à H)
Tout d’abord je te salue sympathiquement et te remercie infiniment de bien avoir voulu te donner la peine de me répondre, très Cher Ami,
Je me suis parfois demandé pourquoi Sébastien avait inscrit le point 5 de sa charte, mais maintenant je comprends. Va donc consulter ce lien: https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html
Ceci étant dit, voici une macro qui –placé dans le code de la feuille – modifie les couleurs de la première de tes formes uniquement :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Ellipse 1")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
Si celui-ci te convient, soit tu arrives à l’appliquer toi-même à tes autres formes, soit je peux le faire pour toi.
Cordialement.
merci de l'aide
je regarde le fonctionnement
Bonjour et merci
cela repond parfaitement a mon exercice
j' ai généré pour chaque valeur de la colonne B la recopie du programme
en mentionnant le nom de l objet corrrespondant
tout fonctionne
cordialement
Bernard
asso a écrit :j' ai généré pour chaque valeur de la colonne B la recopie du programme
Aïe, aïe, aïe, c’est bien ce que je craignais
J’espérais secrètement que tu me dises que tu avais besoin d’aide et que je voie comment passer par un certain nombre de conditions IF ou en passant par un SELECT CASE pour donner le nom de toutes les formes à une variable quelconque de manière à ne pas devoir répéter autant de fois les 4 conditions If Target = X then.
Mais bon, peux-tu éventuellement me montrer ta macro actuelle et je verrais si j’ai une fois le temps de réaliser mon autre idée et si ça vaut surtout la peine de continuer à chercher ?
Amicalement.
Bonjour
voici la macro
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
If Target.Count > 1 Then Exit Sub
'PROCEDURE POUR L ELIPSE
If Not Application.Intersect(Target, Range("B2")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Ellipse 1")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
' PROCEDURE POUR LE LOSANGE
If Not Application.Intersect(Target, Range("B3")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Losange 3")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
'PROCEDURE POUR LE RECTANGLE 2
If Not Application.Intersect(Target, Range("B4")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
'PROCEDURE POUR LE TRIANGLE
If Not Application.Intersect(Target, Range("B5")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Triangle isocèle 6")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
' PROCEDURE TRAPEZE
If Not Application.Intersect(Target, Range("B6")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Trapèze 7")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
' PROCEDURE RECTANGLE 4
If Not Application.Intersect(Target, Range("B7")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Rectangle 4")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
' PROCEDURE PARRALLELOGRAMME
If Not Application.Intersect(Target, Range("B8")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Parallélogramme 23")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
' PROCEDURE HEXAGONE
If Not Application.Intersect(Target, Range("B9")) Is Nothing Then
ActiveSheet.Shapes.Range(Array("Hexagone 24")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
effectivement si je rajoute des formes geometriques je repete le code
a chaque fois.............peut etre une boucle avec variable. ???..
cordialement
Bernard
Salut Bernard,
Merci pour le nom des formes que je n’ai ainsi pas eu besoin de chercher
Voici un code plus simple qui permettrait – le cas échéant – de pouvoir modifier les références aux couleurs qu’une seule fois ou de rajouter sans trop de complication des formes en plus.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Application.ScreenUpdating = False
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("B2:B9")) Is Nothing Then
If Target.Row = 2 Then ActiveSheet.Shapes.Range(Array("Ellipse 1")).Select
If Target.Row = 3 Then ActiveSheet.Shapes.Range(Array("Losange 3")).Select
If Target.Row = 4 Then ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select
If Target.Row = 5 Then ActiveSheet.Shapes.Range(Array("Triangle isocèle 6")).Select
If Target.Row = 6 Then ActiveSheet.Shapes.Range(Array("Trapèze 7")).Select
If Target.Row = 7 Then ActiveSheet.Shapes.Range(Array("Rectangle 4")).Select
If Target.Row = 8 Then ActiveSheet.Shapes.Range(Array("Parallélogramme 23")).Select
If Target.Row = 9 Then ActiveSheet.Shapes.Range(Array("Hexagone 24")).Select
If Target = 1 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 0)
Else
If Target = 2 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 176, 80)
Else
If Target = 3 Then
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End If
End If
End If
ActiveCell.Offset(0, 0).Activate
End Sub
Amicalement.