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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Mise en forme conditionnelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mise en forme conditionnelle

n°903298
ErwMat
Parce que je le vaux bien
Posté le 20-11-2004 à 00:51:23  profilanswer
 

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

mood
Publicité
Posté le 20-11-2004 à 00:51:23  profilanswer
 

n°903361
Profil sup​primé
Posté le 20-11-2004 à 11:59:41  answer
 

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

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

  Mise en forme conditionnelle

 

Sujets relatifs
Mise à jour d'un DomXMLLogiciel gratuit de mise à jour automatique du genre Live Update ?
Mise en place d un dictionnaireCreation d'un outil de mise à jour d'un site
Creer un outil de mise à jourGérer les composant d'une forme ...
Help : Mise En PageMise à jour des fichier dans les makefiles
Mise en forme d'un date[VBA excel] mise en forme conditionnelle
Plus de sujets relatifs à : Mise en forme conditionnelle


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