Mise en forme conditionnelle dans zone de texte

Bonjour à tous,

J'espère que vous pourrez m'aider à trouver une solution

Je suis actuellement entrain d'essayer de mettre en place une forme conditionnelle dans une zone de texte.

Pour être plus clair, je récupère une infirmation dans une autre feuil de mon classeur excel que j'intègre dans une zone de texte ( la formule donne "='nombre chantier en cours'!H1") l'information est bien récupéré mais j'aimerais lui attribuer une couleur en fonction du nombre qui apparaît.

N'étant pas très fort en VbA y a t'il une méthode pour me sauver de cette affaire facilement ?

Merci

Ps: Je ne peux malheureusement pas utiliser une cellule car sinon ça serait bien trop simple

Ci-joint mon code :

Private Sub Worksheet_Activate()

Call CouleurZoneTexte

End Sub

Sub CouleurZoneTexte()

Application.ScreenUpdating = False

xVal = Sheets("Satisfaction Client").[R7]

ActiveSheet.Shapes.Range(Array("TextBox 14")).Select

Call Coloriage

xVal = Sheets("Satisfaction Client").[R7]

ActiveSheet.Shapes.Range(Array("TextBox 56")).Select

Call Coloriage

xVal = Sheets("Satisfaction Client").[V7]

ActiveSheet.Shapes.Range(Array("TextBox 57")).Select

Call Coloriage

xVal = Sheets("Satisfaction Client").[V7]

ActiveSheet.Shapes.Range(Array("TextBox 16")).Select

Call Coloriage

xVal = Sheets("Satisfaction Client").[Z7]

ActiveSheet.Shapes.Range(Array("TextBox 58")).Select

Call Coloriage

xVal = Sheets("Satisfaction Client").[Z7]

ActiveSheet.Shapes.Range(Array("TextBox 17")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[B5]

ActiveSheet.Shapes.Range(Array("TextBox 88")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[B5]

ActiveSheet.Shapes.Range(Array("TextBox 11")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[E5]

ActiveSheet.Shapes.Range(Array("TextBox 83")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[E5]

ActiveSheet.Shapes.Range(Array("TextBox 79")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[H5]

ActiveSheet.Shapes.Range(Array("TextBox 89")).Select

Call Coloriage

xVal = Sheets("nombre chantier en cours").[H5]

ActiveSheet.Shapes.Range(Array("TextBox 80")).Select

Call Coloriage

End Sub

Sub Coloriage()

With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill

.Visible = msoTrue

Select Case xVal

Case Is = 3

.ForeColor.RGB = RGB(0, 176, 80) 'VERT

Case Is = 2

.ForeColor.RGB = RGB(255, 192, 0) 'ORANGE

Case Is = 1

.ForeColor.RGB = RGB(255, 0, 0) 'ROUGE

End Select

.Transparency = 0

.Solid

End With

Application.ScreenUpdating = True

[A1].Select

End Sub

Le travail à l'air de fonctionner mais la police ne change pas de couleur ...

Merci

Bonjour t0mma

Je pense (juste à la lecture de ton code) qu'en modifiant "l'entête" de ta procédure "Coloriage" tu devrais résoudre ton problème

Tu as écrit

Sub Coloriage()
' Select Case...
' End Select...'
End Sub

Cependant tu testes la valeur de xVal et elle n'est pas transmise à "Coloriage" ou alors elle devrait être en variable publique, mais d'après ton "bout de code" ce n'est pas le cas...

Donc en écrivant :

Sub Coloriage(xVal)
'...
End Sub

PS/ Quand tu insère du code dans ton message il est plus facile à lire si tu le place entre balises [Code] en sélectionnant le code en question puis en appuyant ensuite sur le bouton vert [Code] le 5ème en haut de la zone de saisie du message... ;;)

Salut !

Merci pour l'astuce

j'ai donc corrigé en mettant ce code là :

Sub Coloriage(xVal)
With Selection.ShapeRange.TextFrame2.TextRange.Font.Fill
.Visible = msoTrue
Select Case xVal
Case Is = 3
.ForeColor.RGB = RGB(0, 176, 80) 'VERT
Case Is = 2
.ForeColor.RGB = RGB(255, 192, 0) 'ORANGE
Case Is = 1
.ForeColor.RGB = RGB(255, 0, 0) 'ROUGE
End Select
.Transparency = 0
.Solid
End With
Application.ScreenUpdating = True
[A1].Select
End Sub

En lançant mon code cela me met une erreur de compilation : " Argument non facultatif" en me soulignant le "call coloriage" du code juste au dessus ...

Je ne sais pas si j'ai été assez clair ^^

(re)

Excuse-moi, je pensais ton niveau VBA plus élevé

Explications :

J'ai modifié ton code en ajoutant une variable (à transmettre) à la procédure Coloriage

Donc lorsque tu utilises "ma" procédure Coloriage il faut indiquer cette variable (qui n'est effectivement pas falcultative)

Sur chaque ligne où tu as l'instruction Call Coloriage tu dois là changer en Call Coloriage xVal pour transmettre cette variable

Ca marche !!

T'es génial !

Effectivement je suis plus que débutant en VBA ^^'

(re)

t0mma a écrit :

Ca marche !! T'es génial !

Merci !
t0mma a écrit :

Effectivement je suis plus que débutant en VBA ^^'

Toute chose doit avoir un début et Excel et VBA par contre n'ont pas de limite... Plus tu utilises, plus tu en apprends...

Bonjour, j'ai écris ce code :

Sub MiseAJourZoneDeTexteDTU()

'

' MiseAJourZoneDeTexteDTU Macro

xVal = Sheets("Indicateurs").[AY64]

ActiveSheet.Shapes.Range(Array("TextBox 29")).Select

With Selection.ShapeRange.Fill

.Visible = msoTrue

Select Case xVal

Case Is > 0

.ForeColor.RGB = RGB(0, 176, 80) 'VERT

Case Is < 0

.ForeColor.RGB = RGB(255, 0, 0) 'ROUGE

Case Is = 0

.ForeColor.RGB = xlNone 'TRANSPARENT

End Select

.Transparency = 0

.Solid

End With

[A1].Select

Dans certaine condition mon xVal renvoi un message personnaliser dans la zone de texte que je souhaite conditionner (exemple : "Tendance non représentative"

Et je souhaiterai savoir comment faire pour la rendre transparente dans ce cas la ? Car dans le cas ou il y a du texte dans la zone la macro s’arrête a :

Case Is > 0

Si quelqu'un pourrais m'aider :S

Rechercher des sujets similaires à "mise forme conditionnelle zone texte"