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

Couleur d'une cellule et couleur d'une Forme

  • Initiateur de la discussion Initiateur de la discussion Michel_ja
  • 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 !

Michel_ja

XLDnaute Occasionnel
Bonjour, j'ai une macro qui est censé remplir le fond d'une Shape de la même couleur que le fond d'une cellule. Alors j'ai mis le code suivant : Selection.ShapeRange.Fill.ForeColor.SchemeColor = CouleurPays (CouleurPays étant une variable CouleurPays = ActiveCell.Interior.ColorIndex). Mais j'ai deux problèmes : le premier c'est que parfois il me dit que je numéro de couleur va au delà des limites autorisées (il m'affiche 4 250 par exemple). Deuxième problème c'est que lorsque je change la couleur de la cellule avec une des couleurs standards d'excel, résultat la couleur de la shape n'est pas identique à la couleur de la cellule !! Pouvez-vous m'aider ? Merci d'avance.
 
Re : Couleur d'une cellule et couleur d'une Forme

Bonjour Michel_ja,

Pour une raison que j'ignore, il semble qu'il y a un écart de 7 entre le codage des couleurs des cellules et celles des objets.

Sub Bouton4_QuandClic()
aaa = Range("A1").Interior.ColorIndex
MsgBox aaa
ActiveSheet.Shapes("Groupe 3").Fill.ForeColor.SchemeColor = aaa + 7
End Sub
 
Re : Couleur d'une cellule et couleur d'une Forme

Bonjour,

essaye avec la fonction RGB comme ceci:

CouleurPays = activecell.Interior.Color
activesheet.shapes(1).fill.ForeColor.RGB = CouleurPays

Edit: bonjour tototiti 🙂
 
Re : Couleur d'une cellule et couleur d'une Forme

Skoobi, J'ai essayé avec
CouleurPays = activecell.Interior.Color
activesheet.shapes(1).fill.ForeColor.RGB = CouleurPays
Mais la macro s'arrête avec le message suivant "run-time error "6" et overflow" ??
par contre si j'ajoute index à Color il va jusqu'au bout mais ne met pas encore la même couleur que la cellule !
 
Re : Couleur d'une cellule et couleur d'une Forme

Je ne peux t'envoyer le fichier mais voilà le code.

Sub EssaiCouleur()


Dim Pays As Object
Dim Valeur As String
Dim NomPays As String
Dim HautText As Double
Dim GaucheText As Double
Dim Ligne As Integer
Dim Colonne As Integer
Dim CouleurPays As Integer

Worksheets("analysis").Select
For Ligne = 4 To 42
If Cells(Ligne, 17) <> 0 Then
Cells(Ligne, 17).Select
Valeur = ActiveCell.Text
CouleurPays = Cells(Ligne, 17).Interior.ColorIndex


ActiveCell.Offset(0, -1).Select
NomPays = ActiveCell.Text
ActiveCell.Offset(0, -1).Activate
GaucheText = ActiveCell.Value
ActiveCell.Offset(0, -1).Activate
HautText = ActiveCell.Value

ActiveSheet.Shapes("Characters").Select
Selection.Copy
Worksheets("mapping").Activate
ActiveSheet.Paste
Selection.ShapeRange.Left = GaucheText
Selection.ShapeRange.Top = HautText
Selection.ShapeRange(1).TextFrame.AutoSize = msoTrue
Selection.Characters.Text = Valeur

ActiveSheet.Shapes(NomPays).Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = CouleurPays + 7


End If
Worksheets("analysis").Select
Next Ligne

End Sub
 
Re : Couleur d'une cellule et couleur d'une Forme

Et elle est précédée par celle-ci pour la mise en forme conditionnelle des cellules du tableaux. Souvent j'ai le message d'erreur qui me dit que la Shape ne peut prendre la couleur de la cellule ; lorsque je passe le curseur dessus j'ai en effet -4142 ??

Sub CouleurCelluleTableau()
'Dim cellule As Range
Dim J As Integer
Dim I As Integer

Range("Q4:AG29").FormatConditions.Delete

For J = 4 To 34
For I = 17 To 35
Cells(J, I).Activate
If FormatCondition = True Then
Format(ActiveCell).Clear
End If
If ActiveCell.Value <> "" Then
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0", Formula2:="0,01"
Selection.FormatConditions(1).Interior.ColorIndex = 41
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="0,01", Formula2:="0,05"
Selection.FormatConditions(2).Interior.ColorIndex = 44
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="0,05"
Selection.FormatConditions(3).Interior.ColorIndex = 39

End If
Next
Next

End Sub
 
Re : Couleur d'une cellule et couleur d'une Forme

Bonjour Michel, Skoobi

essaye peut être ainsi, si j'ai bien compris :

Code:
ActiveSheet.Shapes(1).Fill.ForeColor.RGB = ActiveWorkbook.Colors(ActiveCell.Interior.ColorIndex)

bonne soirée
@+

Attention : ne fonctionne pas si couleur provient d'une mise en forme conditionnelle
 
Re : Couleur d'une cellule et couleur d'une Forme

Mais justement, la couleur vient d'une mise en forme conditionnelle. Au départ mon souhait était d'avoir une carte de France où les régions (des shapes) prendraient une couleur en fonction de la valeur d'une cellule !! J'ai même voulu aller jusqu'au dégrader mais je crois que c'est pas facile avec excel 2003. Peut-être as tu une autre solution ?
 
Re : Couleur d'une cellule et couleur d'une Forme

J'ai trouvé sur un forum aux US qu'on pourrait peut-être utiliser le code : CouleurPays = Cells(Ligne, 17).FormatConditions(1).interior.ColorIndex mais la personne doute car elle ne s'applique que lorsqu'on a qu'une seule condition. Autrement, et ça serait mieux, on pourrait le faire avec Select Case. Est-ce que vous savez comment faire ? faut-il nommer FormatConditions comme une variable ?
 
Re : Couleur d'une cellule et couleur d'une Forme

Bonjour,

salut Pierrot 🙂,

Bonjour,


Tu peux récupérer la couleur de la mise en forme conditionnelle en écrivant une condition identique à celle se trouvant dans la mise en forme conditionnelle.

Exemple :
Contenu de la mise en forme conditionnelle :
1 – la valeur de la cellule est ---- supérieure à ---- 15
à couleur rouge
2- la valeur de la cellule est ---- inférieure ou égal à ---- 15
à couleur vert

Ca donne pour le code :

Code:
Sub coulcondition()
If Cells(23, 5).Value > 15 Then
  CouleurPays = Cells(23, 5).FormatConditions([COLOR=royalblue][B]1[/B][/COLOR]).Interior.Color
ElseIf Cells(23, 5).Value <= 15 Then
  CouleurPays = Cells(23, 5).FormatConditions([COLOR=royalblue][B]2[/B][/COLOR]).Interior.Color
End If
ActiveSheet.Shapes(2).Fill.ForeColor.RGB = CouleurPays
End Sub

Voilà 😉
 
- 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
5
Affichages
197
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…