Colorier des cellules sous condition en VBA

Fermé
pat640 Messages postés 1 Date d'inscription jeudi 26 juin 2014 Statut Membre Dernière intervention 26 juin 2014 - 26 juin 2014 à 19:16
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 juin 2014 à 10:05
Bonjour le forum,

Je suis novice en VBA....je ne suis plus tout jeune (mes facultés mentales commencent à me faire défaut!) et je me heurte à un pb sur un code, en fait je pense que je ne comprends pas ce que je fais....
J'ai deux colonnes disons la A et la B, dans la A j'ai des valeurs qui correspondent à une heure en format 0,00 et dans l'autre, j'ai des chiffres 0,1,2,etc...qui correspondent à J ou J+1 ou J+2,etc
J'ai besoin de colorier les cellules dans la colonne A selon sa valeur en fonction de la plage horaire et de la valeur de B en vis à vis de A:
vert de >16h00 à <= 9h00 pour b=0, b=1
jaune de > 9h00 à <=11h00 pour b=0, b=1
Bleu de >11h00 à <=14h00 pour b=0
Rouge de >14h00 à <=16h00 pour b=0

Si b>1 et A>11 pas de coloriage

J'ai une dizaine de cellules à identifier, voici une partie du code que j'avais écrit, mais rien ne s'inscrit, en fait je ne sais pas scruter deux colonnes simultanément...

'Colorier les cellules
Dim vCellule As Variant
Dim i As Range

Collection = Sheets(MaFeuille).Range(B3:B15)

For Each vCellule In Collection

If vCellule <= 1 Then
i = vCellule.Offset(-1, 0).Activate

Select Case i
Case 7.5 To 9
i.Interior.ColorIndex = 4
Case 9.01 To 11
i.Interior.ColorIndex = 27
Case 11.01 To 14
i.Interior.ColorIndex = 32
Case 14 To 16
i.Interior.ColorIndex = 3
Case Else
i.Interior.ColorIndex = xlNone
End Select

End If
Next



J'ai fait un petit fichier avec des couleurs mais je ne sais pas le lier merci pour votre aide

Cordialement
Patrick

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 27/06/2014 à 10:14
Bonjour Pat l'ancien ;o)

essaies peut-^tre cette macro (j'ai adouci le bleu car on ne pouvait plus lire et j'ai considéré que les nombres dans la colonne B étaent en entiers, si réels tu passes dim ref as byte en Dim ref as single)

Option Explicit
'----------
Sub colorier()
'vert de >16h00 à <= 9h00 pour b=0, b=1 _
jaune de > 9h00 à <=11h00 pour b=0, b=1 _
Bleu de >11h00 à <=14h00 pour b=0 _
Rouge de >14h00 à <=16h00 pour b=0 _
--------
Dim lig As Byte, Ref As Byte, heure As Range
With Sheets(1) 'A ADAPTER
.Range("A3:AB15").Interior.ColorIndex = xlNone
For lig = 3 To 15
Ref = .Cells(lig, "B")
If Ref = 0 Or Ref = 1 Then
Set heure = .Cells(lig, "A")
With heure
If Ref = 0 Then
If heure > 11 And heure <= 14 Then .Interior.ColorIndex = 33 'bleu
If heure > 14 And heure <= 16 Then .Interior.ColorIndex = 3 'rouge
End If
If heure > 9 And heure <= 11 Then .Interior.ColorIndex = 6 'jaune
If heure <= 9 Or heure > 16 Then .Interior.ColorIndex = 4 'vert
End With
End If
Next
End With
End Sub

tu dis....


Michel
0