[excel] application automatique d'une macro à une case

application automatique d'une macro à une case [excel] - VB/VBA/VBS - Programmation

Marsh Posté le 17-01-2006 à 08:24:19    

voilà, en gros, je voudrai donner une couleur de fond à une cellule suivant la valeur qu'elle contient (typiquement: rouge si négative, verte si positive).
 
J'ai codé une telle routine avec mes petites paluches (pas avec le "recorder" de excel, quoi...)
Le "hic", c'est qu'elle ne se lance qu'à son appel (et en ouverture de fichier).
 
Serait-t-il possible de l'automatiser, de telle sorte que dès que sa valeur change, la macro soit appliquée et que la couleur de remplissage soit automatiquement adaptée?
 
Le code actuel de la macro (très simple, je sais) est le suivant:
 

Code :
  1. Sub Colouring_balance()
  2.     Range("L17" ).Select
  3.     If Selection.Value < 0 Then
  4.         Selection.Font.ColorIndex = 2
  5.         With Selection.Interior
  6.             .ColorIndex = 3
  7.             .Pattern = xlSolid
  8.         End With
  9.     Else
  10.         Selection.Font.ColorIndex = 2
  11.         With Selection.Interior
  12.             .ColorIndex = 10
  13.             .Pattern = xlSolid
  14.         End With
  15.     End If
  16. End Sub


 
elle s'applique donc à la case L17.

Reply

Marsh Posté le 17-01-2006 à 08:24:19   

Reply

Marsh Posté le 17-01-2006 à 09:10:51    

utilise le code suivant dans l'objet de la feuille concernée :
 
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If (Target.Column = 12) And (Target.Row = 17) Then
    Colouring_balance
  End If
End Sub
 
Cette fonction se lance à chaque changement de valeur dans la feuille tu teste danc si elle est appellée depuis la case L17 et tu lance ta macro

Reply

Marsh Posté le 17-01-2006 à 09:15:00    

Impeccable!
 
Et pour peaufiner le tout, j'aimerait appliquer cette macro a toute les feuilles de mon classeur... sans avoir à copier ce code dans chaque worksheet... c'est possible?

Reply

Marsh Posté le 17-01-2006 à 09:18:32    

peut être avec Workbook_Change dans l'objet Workbook mais je suis pas sur

Reply

Marsh Posté le 17-01-2006 à 09:19:46    

En fait, la macro ne se lance pas...
 
pourtant, j'ai fais un "copy-paste"...
Il n'y a aucune erreur?


Message édité par ElDje le 17-01-2006 à 09:21:46
Reply

Marsh Posté le 17-01-2006 à 09:24:17    

Ok, sans doute ais-je mal expliqué... je viens de relire ton code et l'eplication que tu en donnes.
 
La valeur dans cette case est (L17) est le résultat d'une formule.
Donc, le changement de valeur a lieux sur d'autres cellules!
Je suppose que c'ets pourquoi la macro n'est pas lancée.
 
une solution?

Reply

Marsh Posté le 17-01-2006 à 09:24:49    

la fonction avec Worksheet_Change doit marcher j'ai moi aussi fait un copier coller depuis un classeur ou cela fonctionne l'as tu bien mis au bon endroit

Reply

Marsh Posté le 17-01-2006 à 09:27:15    

...Je ferai mieux de réfléchir avant de poster, je sais ^_^'
 
Jai trouvé...
en gros, la macro est lancé à chaque changement de valeur dans le tableur:
 

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  2.     Colouring_balance
  3. End Sub


 
Merci pour ton aide ^_^, damienCYS.

Reply

Marsh Posté le 17-01-2006 à 09:28:13    

ne tien pas compte de ma réponse précédente je vien de voir que ca provient d'une fonction.
Si tu veu seulement appliquer une couleur de fond à ta case en fonction de sa valeur il faudrait mieu que tu utilise la mise en formae conditionnelle q'une macro

Reply

Marsh Posté le 17-01-2006 à 09:31:26    

En cadeau pour les prochains:
 
Pour appliquer ce code à TOUTES les pages d'un classeur, la syntaxe est la suivante, à placer dans WORKBOOK:
 

Code :
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2.     Colouring_balance
  3. End Sub

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed