Mise en forme conditionnelle

Mise en forme conditionnelle - VB/VBA/VBS - Programmation

Marsh Posté le 20-11-2004 à 00:51:23    

Bonjour,
 
J'ai créé sous Excel un tableau représentant le calendrier 2005. Je souhaiterais pouvoir y gérer mes absences professionnelles par catégories : congés, RTT, bonifications, ancienneté, maladie, maternité, enfant malade, etc... comme le fait mon service du personnel.
 
Malheureusement la mise en forme conditionnelle est limitée à 3 conditions. J'ai donc essayé avec une macro. Malheureusement celle-ci ne fonctionne pas :
 
--
 
Sub MiseFormeCond()
 
  Application.ScreenUpdating = False
   
  For Each c In Worksheets(1).Range("A1:AA100" )
   
    If c.Value = "ca" Then
        c.Interior.ColorIndex = 30
        c.Font.ColorIndex = 2
    End If
     
    If c.Value = "rtt" Then
        c.Interior.ColorIndex = 30
        c.Font.ColorIndex = 2
    End If
    If c.Value = "a" Then
        c.Interior.ColorIndex = 53
        c.Font.ColorIndex = 2
    End If
    If c.Value = "b" Then
        c.Interior.ColorIndex = 54
        c.Font.ColorIndex = 2
    End If
    If c.Value = "" Then
        c.Interior.ColorIndex = 0
        c.Font.ColorIndex = 0
        c.Font.Bold = False
    End If
Next c
Application.ScreenUpdating = True
End Sub
 
--
 
Sachant que je souhaiterais que cette macro s'applique à toutes les feuilles de mon classeur et que la mise à jour des mises en forme soit automatique.
 
Merci d'avance.
 
Erwan

Reply

Marsh Posté le 20-11-2004 à 00:51:23   

Reply

Marsh Posté le 20-11-2004 à 11:59:41    

c'est curieux chez moi ca fonctionne, mais pour que toutes les feuilles de ton classeur soient considérées il faut rajouter :
 
Sub MiseFormeCond()
 
  Application.ScreenUpdating = False
 
For S = 1 To ThisWorkbook.Sheets.Count
 
  For Each c In Worksheets(S).Range("A1:AA100" )
   
    If c.Value = "ca" Then
        c.Interior.ColorIndex = 30
        c.Font.ColorIndex = 2
    End If
     
    If c.Value = "rtt" Then
        c.Interior.ColorIndex = 30
        c.Font.ColorIndex = 2
    End If
    If c.Value = "a" Then
        c.Interior.ColorIndex = 53
        c.Font.ColorIndex = 2
    End If
    If c.Value = "b" Then
        c.Interior.ColorIndex = 54
        c.Font.ColorIndex = 2
    End If
    If c.Value = "" Then
        c.Interior.ColorIndex = 0
        c.Font.ColorIndex = 0
        c.Font.Bold = False
    End If
Next c
Next S
 
Application.ScreenUpdating = True
End Sub
 
Pour que ca soit automatique tu peut placer la procedure dans le code du classeur (ThisWorkbook) et la déclarer en tant que :
 
Activate
Open
BeforeSave
SheetSelectionChange
 
ou tout autre evenement qui se produit et qui te semble le plus approprié pour que la procédure s'execute


Message édité par Profil supprimé le 20-11-2004 à 12:08:04
Reply

Sujets relatifs:

Leave a Replay

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