pb de programmation de vba ss excel

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

malika

XLDnaute Nouveau
bonjour j'ai un pb sous vba sur excel, mon objectif est de créer un feux tricolores qui clignotera ou rouge, jaune ou vert selon certaines valeurs, et j'intègrerai ce feu à mon tableau de bord, j'ai le code ci dessus disponible ms il n marche pas et j ne sais pas c qui est faux exactem, de plus j'ai créer l'objet du feux sur excel grâce à la forme automatique, dois-je plutôt le créer ss vba grâce à la boîte à outils? comment y mettre la couleur? et comment définir cet objet pr que quand je le nomme ss vba il le reconnaisse immédiatement? voici le code, si vous pouvez m'aider, merci bcp.... j rame grave

Public Sub Feurouge(seuilbas, seuilhaut, mesure)

If mesure < seuilbas Then
couleur = "vert"
ElseIf mesure >= seuilbas And mesure < seuilhaut Then
couleur = "jaune"
ElseIf mesure >= seuilhaut Then
couleur = "rouge"
Else: Call affiche(couleur)
End If
End Sub

Sub affiche(couleur) 'Allume les lampes
With Feuil3
Set mamesure = .Mesure1 'Les propriétés du premier feu
Set Jaune = .ColorIndex = 6
Set Vert = .ColorIndex = 2
Set Rouge = .ColorIndex = 4
End If
mamesure.Caption = mesure
If couleur = "rouge" Then
Jaune.BackColor = RGB(100, 100, 0)
Vert.BackColor = RGB(0, 80, 0)
Rouge.BackColor = RGB(255, 0, 0)
ElseIf couleur = "jaune" Then
Vert.BackColor = RGB(0, 100, 0)
Rouge.BackColor = RGB(100, 0, 0)
Jaune.BackColor = RGB(250, 250, 0)
ElseIf couleur = "vert" Then
Jaune.BackColor = RGB(10, 10, 0)
Rouge.BackColor = RGB(100, 0, 0)
Vert.BackColor = RGB(0, 255, 0)
End If
End With
End Sub

les seuils bas et haut sont définis sur une autre feuille contenant les valeurs ds un tableau avec le code suivant

Private Sub CommandButton1_Click()
'appel de la fonction feu rouge
'Feu rouge alerte client
seuilbas = Feuil18.Range("FR1SB").Value 'lit la valeur du seuil bas
seuilhaut = Feuil18.Range("FR1SH").Value 'lit la valeur du seuil haut
valeur = Feuil18.Range("FR1VAL").Value 'lit la valeur
Call Module1.Feurouge(seuilbas, seuilhaut, valeur)
Feuil3.Activate 'Appel de la page de signalisation
End Sub

merci
 
Re : pb de programmation de vba ss excel

Bonjour Malika

je sais pas si cela peut t aider, mais regarde le fichier joint, procédure événementielle dans le module de la feuille, par contre moi je n'ai pas trouvé de forme auto toute faite avec feu tricolore...

bon après midi
@+
 

Pièces jointes

Re : pb de programmation de vba ss excel

merci de cette réponse, le principe est bon par contre il faut carrément écrire la valeur dans la case correspondante, pr changer les couleurs, alors q sur mon fichier cette valeur change automatiquement via une feuille (où il y a des calculs), aurait tu une autre idée?
merci
 
Re : pb de programmation de vba ss excel

Bonjour Malika

c'est une procédure événementielle, mais rien ne t'empêche de prendre ce code et de l'adapter à ton cas.

Comme ca, en l'état je ne vois pas du tout ou tu déterminex tes seuils, il faudrait voir ton classeur avec le code pour t'en dire plus...

bonne journée
@+
 
Re : pb de programmation de vba ss excel

Coucou merci d'avoir répondu, je te joins mon fichier pr que tu voies un peu plus de koi je parle, faut dire q j'y connait rien en vba, mon objectif est de faire changer les couleurs du feu selon les valeurs qui s'affiche en H34, elles changent grâce au choix des semaines situés plus, j'ai récupéré le code ds le livre d'Alain Fernandez "Essentiel du tableau de bord" ms j'y arrive pas et c pas bien expliqué, l'objectif est q le feu soit rouge en cas de nbr de mises en demeure trop importante, jaune en intermédiare et vert qd tout va bien, le fichier est encore brouillon, désolé... pourrais tu m'aider?
merci encore
 

Pièces jointes

Re : pb de programmation de vba ss excel

Re Malika

ci joint ton fichier en retour, j'ai incorporé le code que je t'avais donné hier en modifiant pour l'adapter à ton fichier.

Je sais pas si j'ai bien compris, mais il fonctionne automatiquement dès que tu modifies la cellule L25, et les seuils sont déterminés par les valeurs contenues dans les cellules L23 et L24.

J'ai laissé le code déjà en place mais à priori il ne servira plus. A toi de voir.

Testes et dis si cela te convient.

bon après midi
@+
 

Pièces jointes

Re : pb de programmation de vba ss excel

ReBonjour le forum et Bonjour Pierrot?

J'ai un autre soucis et une autre question à vous demander, j'ai la formule de Pierrot, qui marche parfaitement bien pr créer un feu tricolore selon certaines valeurs:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$33" Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(255, 255, 255)
If IsEmpty(Target.Value) Or Not IsNumeric(Target.Value) Then Exit Sub
If Target.Value < Range("L32").Value Then
ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(0, 255, 0)
ElseIf Target.Value > Range("L31").Value Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 0, 0)
Else
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 128, 0)
End If
End If
End Sub

Le souci que j'ai c'est que la cellule de référence (target.address="$L$33") ne se remplit pas par l'utilisateur directement, mais est recalculé lorsque l'on change de semaine, comment agir sur cette cellule pour que lorsque l'on change de semaine cela est une incidence sur la couleur du feu,ss changer manuellement la valeur de la cellule L33? j'ai bien pensé à la fonction Calculate ms je ne sais pas trop comment l'insérer, sais pas si j'explique bien, je vous choix le fichier en question pour comprendre mieux... si vous avez une idée.... merci infinim
 

Pièces jointes

Re : pb de programmation de vba ss excel

c pareil... tant que l'on ne change pas la valeur de la cellule manuellement, ça ne la prends pas en cpt pr le changement d couleur des feux, les liens ont dû etre rompus pr le changem d semaines...
 
Re : pb de programmation de vba ss excel

Re

esaye avec le code ci dessous :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$3" Then
    ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
    ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
    ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(255, 255, 255)
    If IsEmpty(Range("L25").Value) Or Not IsNumeric(Range("L25").Value) Then Exit Sub
    If Range("L25").Value < Range("L24").Value Then
        ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(0, 255, 0)
            ElseIf Target.Value > Range("L23").Value Then
                ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 0, 0)
    Else
        ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 128, 0)
    End If
End If
End Sub

attention, dans ton dernier fichier, il semblerait que les adresses de cellules aient changées depuis la dernière fois...à adapter éventuellement.

bon après midi
@+
 
Re : pb de programmation de vba ss excel

d'ac j viens d'apater le nouvel emplacem de mes cellules au fichier, mais y'a un bug, seule la couleur verte s'affiche qd inférieur au seuil bas en changeant les semaines mais rien ne se passe pr le reste ( pas de couleur rouge si supérieur au seuil, ni orange si intermédiaire) les autres ovales restent blanches, y'a q le vert qui marche... j'essaye pour voir....
 
Re : pb de programmation de vba ss excel

Re,

aarf, j'avais oublié de modifier un "Target.value"... désolé....

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$3" Then
    ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 255, 255)
    ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 255, 255)
    ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(255, 255, 255)
    If IsEmpty(Range("L25").Value) Or Not IsNumeric(Range("L25").Value) Then Exit Sub
    If Range("L25").Value < Range("L24").Value Then
        ActiveSheet.Shapes("Oval 3").Fill.ForeColor.RGB = RGB(0, 255, 0)
            ElseIf Range("L25").Value > Range("L23").Value Then
                ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = RGB(255, 0, 0)
    Else
        ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = RGB(255, 128, 0)
    End If
End If
End Sub
 
- 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
14
Affichages
248
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
318
Réponses
5
Affichages
238
Réponses
4
Affichages
243
Retour