Macro automatique

red-69

XLDnaute Nouveau
Bonjour à tous.

J'ai créé une macro qui en fonction de la valeur de la cellule C11 me colore la cellule B11 en différentes couleur.
Mon problème c'est que je dois lancer la macro manuellement via un bonton d'appel de macro.
Je souhaiterai que cette opération soit automatisée, sans avoir besoin du bouton, mais cela ne fonctinone pas même avec worksheet_selectionchange en début de macro.
Quelqu'un aurait-il une idée ??
par avance merci.

Voici la macro :

Sub Worksheet_SelectionChange()
Call color
End Sub
------------------------------------
Sub color()
Worksheets("détail activités").Select
Range("c11").Select
valeur = ActiveCell.Value

If valeur >= 0.9 Then 'couleur verte
Range("b11").Select
With Selection.Interior
.ColorIndex = 4
.Pattern = xlSolid
End With

ElseIf valeur >= 0.75 Then 'couleur jaune
Range("b11").Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With

ElseIf valeur >= 0.5 Then ' couleur orange
Range("b11").Select
With Selection.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With

ElseIf valeur < 0.5 Then 'couleur rouge
Range("b11").Select
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
End With
End If


End Sub
 

Raja

XLDnaute Accro
Re : Macro automatique

Re,

Essaye alors le code suivant et ça devrait normalement marcher :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Call color
End Sub

PS : Tu peux aussi mettre ton code complèt (color) à l'intérieur de cette routine
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Macro automatique

Bonjour red-69,

Je suppose que la macro événementielle est destiné à la feuille "détail activités".
Dans ce cas, point besoin de la sélectionner.
Ensuite, le fait de faire un Select sur une autre cellule pour cet événement (worksheet_selectionchange), cela va relancer le code puisque la sélection a changé...
Je te suggère enfin de rester dans ce code afin d'exploiter Target:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address = "$C$11" Then
    valeur = Target.Value

    With Range("b11").Interior
      If valeur >= 0.9 Then  'couleur verte
        .ColorIndex = 4
        .Pattern = xlSolid

      ElseIf valeur >= 0.75 Then  'couleur jaune
        .ColorIndex = 6
        .Pattern = xlSolid

      ElseIf valeur >= 0.5 Then  ' couleur orange
        .ColorIndex = 45
        .Pattern = xlSolid

      ElseIf valeur < 0.5 Then  'couleur rouge
        .ColorIndex = 3
        .Pattern = xlSolid
      End If
    End With
  End If
End Sub
Bonne soirée.

Edit: Bonjour tbft, Raja, je n'ai pas vu les réponses avant de répondre.
 
Dernière édition:

red-69

XLDnaute Nouveau
Re : Macro automatique

Re,

Essaye alors le code suivant et ça devrait normalement marcher :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Call color
End Sub

merci de l'info,
mais il n'y a aucun changements.
normalement, la cellule C11 correspond à une somme automatique et la valeur de cette somme définit la couleur de la cellule B11. Sauf que rien ne se passe lorsque je modifie les nombres rentrant dans l'addition et que je ne lance pas la macro manuellement.
 

skoobi

XLDnaute Barbatruc
Re : Macro automatique

Re,

merci de vous penchez sur mon pb.
En fait, je souhaiterai que la macro s'effectue dès que je change la valeur d'une cellule.

Dans ce cas:
Code:
Private Sub [COLOR=Blue][B]Worksheet_Change[/B][/COLOR](ByVal Target As Range)
  If Target.Address = "$C$11" Then
    valeur = Target.Value

    With Range("b11").Interior
      If valeur >= 0.9 Then  'couleur verte
        .ColorIndex = 4
        .Pattern = xlSolid

      ElseIf valeur >= 0.75 Then  'couleur jaune
        .ColorIndex = 6
        .Pattern = xlSolid

      ElseIf valeur >= 0.5 Then  ' couleur orange
        .ColorIndex = 45
        .Pattern = xlSolid

      ElseIf valeur < 0.5 Then  'couleur rouge
        .ColorIndex = 3
        .Pattern = xlSolid
      End If
    End With
  End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 974
Membres
103 995
dernier inscrit
Flodk