Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1918 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1285221
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 08:24:19  profilanswer
 

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.

mood
Publicité
Posté le 17-01-2006 à 08:24:19  profilanswer
 

n°1285239
DamienCYS
Posté le 17-01-2006 à 09:10:51  profilanswer
 

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

n°1285242
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:15:00  profilanswer
 

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?

n°1285244
DamienCYS
Posté le 17-01-2006 à 09:18:32  profilanswer
 

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

n°1285245
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:19:46  profilanswer
 

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
n°1285250
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:24:17  profilanswer
 

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?

n°1285251
DamienCYS
Posté le 17-01-2006 à 09:24:49  profilanswer
 

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

n°1285252
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:27:15  profilanswer
 

...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.

n°1285255
DamienCYS
Posté le 17-01-2006 à 09:28:13  profilanswer
 

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

n°1285256
ElDje
Hasta liberta, compañeros
Posté le 17-01-2006 à 09:31:26  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Ignorer les messages de confirmation (VBA Excel)Quelle BDD utiliséé avec VB pour une petite application
diaporama simple xml/flash automatique sans navigationLancer une application grâce a un lien HTML
[VBA EXCEL 2003]Lister les noms des dossiers d'un repertoire > listboxexcel : fonction pour effacer le contenu d'une cellule
html /ajuster automatique zone de texte a la saisieouvrir une application
[Dreamweaver] Création automatique d'un fichier .css à partappel Macro via UserForm(Resolu)
Plus de sujets relatifs à : [excel] application automatique d'une macro à une case


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR