Mise en forme conditionnel dans excel avec vba

caloumaya Messages postés 2 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 18 janvier 2008 - 18 janv. 2008 à 16:46
NHenry Messages postés 15117 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 10 mai 2024 - 18 janv. 2008 à 17:05
Bonjour,

Je craque complètement.
Je bidouille avec excel et vba un planning.
Sur ma feuille 1  j'ai un tableau avec les types d'absence (CA, CE, AT.....) dans ma colonne A, la case correspondante de la colonne B est en couleur (1 couleur par type d'absence).
Dans ma feuille 2 j'ai un planning avec en ligne les noms et en colonne les dates.les dates se calculent automatiquement dans excel (sans vba) en mettant le 1er janvier de l'année encours dans la case B2. Par contre quand je change la case B2 mon gentil code devrait me coloriser les Jours fériés. Et quand je mets CA,CE,AT..... il devrait me mettre la case en couleur.

Niet il ne se passe rien

Merci d'avance pour votre aide

Extrait de la feuille 1
       A                 B
<colgroup><col style=\"WIDTH: 60pt\" span=\"2\" width=\"80\" /></colgroup>----
Code, Couleur, ----
 ,  , ----
CA, CA, ----
CE, CE, ----
RECUP, RECUP, ----
01-01-1900,  , ----
08-04-2007,  , ----
09-04-2007,  , ----
01-05-2007,  

   
Extrait de la feuille 2
      A                 B                C                   D                    E
<colgroup><col style=\"WIDTH: 60pt\" span=\"5\" width=\"80\" /></colgroup>----
 ,  ,  , Tartampion   , Coucou, ----
lundi, 01-janv-07, AM, ,  , ----
lundi, 01-janv-07, PM, , , ----
mardi, 02-janv-07, AM,  CE,  , ----
mardi, 02-janv-07, PM,  CA   ,  , ----
mercredi, 03-janv-07, AM,  CA,  

J'ai écrit le code dans la feuille 2

<ol><li>Private Sub Worksheet_Change(ByVal Target As Range)
</li><li>    If Range("B2").Activate Then
</li><li>    ActiveSheet.Unprotect
</li><li>    Joursferies Target
</li><li>        Else
</li><li>    Coloration Target
</li><li>    End If
</li><li>End Sub
</li><li>Private Sub Worksheet_SelectionChange(ByVal Target As Range)
</li><li>    Coloration Target
</li><li>End Sub
</li><li>Sub Coloration(cellule)
</li><li>On Error GoTo Fin
</li><li>    For Each Code In Application.Range("Code")
</li><li>        If Code.Value = cellule.Value Then
</li><li>        cellule.Interior.ColorIndex = Code.Offset(0, 1).Interior.ColorIndex
</li><li>        Exit Sub
</li><li>    End If
</li><li>Next
</li><li>Fin:
</li><li>End Sub
</li><li>
</li><li>Sub Joursferies(cellule)
</li><li>Application.ScreenUpdating = False
</li><li>Range("A1:B730").Interior.ColorIndex = 0
</li><li>For i = 1 To 730
</li><li>Range("A" & i).Activate
</li><li>Next i
</li><li>For j = 1 To 730
</li><li>Range("B" & j).Activate
</li><li>Next j
</li><li>Application.ScreenUpdating = True
</li><li>ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
</li><li>End Sub</li></ol>, ----
(Coloration syntaxique automatique par Kenji)

Pascale
"La Vallée Dorée"
CC du Liancourtois

1 réponse

NHenry Messages postés 15117 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 10 mai 2024 159
18 janv. 2008 à 17:05
Bonjour

Essaye à la place de
If Range("B2").Activate Then
If Target.row=2 and target.column=2 then

Je pense que cela devrait fonctionner.

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous