Couleur texte dans une forme
Bonjour à tous, je cherche à changer de couleur de texte dans une forme sélectionnée.
j'ai une boucle qui vient sélectionner mes formes concernées.
la commande .ForeColor.RGB = RGB ( ... , .... , .... ) Me permet de changer la couleur de la forme mais je souhaiterais rajouter une ligne pour changer la couleur du texte.
quelqu'un pourrait m'aider?
merci d'avance.
Bonjour Le Nen Samuel, Salut BrunoM45
Voici un exemple avec une boucle sur les formes de la feuille active :
for each sh in activesheet.shapes
'mes autres instructions
sh.textframe2.textrange.font.fill.forecolor.rgb = RGB(1, 2, 3) '<<< adapter RGB
next shCdlt,
C'est un peu une usine à gaz mais voici mon code :
Private Sub Worksheet_calculate()
On Error Resume Next
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim i As Integer 'déclare la variable I (Incrément)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim f As Shape 'déclare la variable F (Forme)
nomfeuill = ActiveSheet.Name
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
DL = Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne C
For Each O In Worksheets 'boucle sur tous les onglets O du classeur
If Not O.Name = "BD" Then 'condition 1 : si le le nom de l'onglet n'est pas "BDD"
O.Activate 'active l'onglet de la boucle 1
For Each f In O.Shapes 'boucle 2 : sur toutes les formes F de l'onglet O
For i = 1 To DL 'boucle 3 : sur toutes les lignes I de 1 à DL
If UBound(Split(Cells(i, "A"), " ")) > 0 Then 'condition 2 : si la valeur de la cellule ligne I colonne A contient un espace
If f.Name = Split(Cells(i, "A"), " ")(1) Then 'condition 3 : si le texte après le premier espace est égal au nom de la forme F
O.Shapes.Range((Array(Split(Cells(i, "A"), " ")(1)))).Select 'sélectionne la forme F
With Selection.ShapeRange.Fill 'prend en compte le remplissage de la forme sélectionnée
If Cells(i, "T").Text = "1" Then 'condition 4 : si la valeur de la cellule ligne I colonne C est [vrai]
.ForeColor.RGB = RGB(0, 0, 0) 'couleur noir
End If
If Cells(i, "T").Text = "2" Then 'sinon (condition 4)
.ForeColor.RGB = RGB(255, 0, 0) 'couleur rouge
End If 'fin de la condition 4
If Cells(i, "T").Text = "3" Then 'sinon (condition 4)
.ForeColor.RGB = RGB(255, 195, 0) 'couleur orange
End If 'fin de la condition 4
'fin de la condition 4
If Cells(i, "T").Text = "4" Then 'sinon (condition 4)
.ForeColor.RGB = RGB(96, 224, 128) 'couleur vert
End If 'fin de la condition 4
If Cells(i, "T").Text = "5" Then 'sinon (condition 4)
.ForeColor.RGB = RGB(136, 122, 183) 'couleur violet
End If 'fin de la condition 4
If Cells(i, "T").Text = "6" Then 'sinon (condition 4)
.ForeColor.RGB = RGB(118, 122, 121) 'couleur gris
End If 'fin de la condition 4
End With 'fin de la prise en compte du remplissage de la forme sélectionnée
End If 'fin de la condition 3
End If 'fin de la condition 2
Next i 'prochaine ligne de la boucle 3
Next f 'prochaine forme de la boucle 2
End If 'fin de la condition 1
ActiveCell.Select 'désélectionne une éventuelle forme
Next O 'prochaine onglet de la boucle 1
'Me.Activate 'acticve l'onglet en cours
Sheets(nomfeuill).Activate
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
Exit Sub
End SubBonjour,
Plusieurs choses ne vont pas dans votre code, notamment l'imbrication de la boucle sur les formes et de celle sur les lignes.
D'une part, il y a certainement un meilleur moyen d'y parvenir et d'autre part, en l'état, sauf incompréhension de ma part, une même forme change plusieurs fois de couleur pour ne retenir que la couleur de la dernière correspondance avec une cellule en T.
Quels sont vos noms de forme et quand faut-il donner une certaine couleur ? Combien avez-vous de formes par feuille ?
Cdlt,