Mise en forme conditionnelle - VB/VBA/VBS - Programmation
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
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