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 !
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...t0mma a écrit :Effectivement je suis plus que débutant en VBA ^^'
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