Coloriser plus de 3 conditions
Résolu
aldéric76
Messages postés
302
Date d'inscription
Statut
Membre
Dernière intervention
-
aldéric76 Messages postés 302 Date d'inscription Statut Membre Dernière intervention -
aldéric76 Messages postés 302 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai cherché un peu partout mais n'ai pas trouvé de réponse à ce problème
je suis sur qu'il est accessible en vba, mais dans ce domaine j'avoue que je suis limite: nul...
bref,
je voudrais que mes cellules se colorise en fonction de l'heure entrée dedans.
donc, de 00h00 à 23h59 : 24 couleurs
bien sur j'ai vu des tas de réponses en passant par la mise en forme conditionnelle, mais le problème est la restriction des 3 conditions.
merci par avance
j'ai cherché un peu partout mais n'ai pas trouvé de réponse à ce problème
je suis sur qu'il est accessible en vba, mais dans ce domaine j'avoue que je suis limite: nul...
bref,
je voudrais que mes cellules se colorise en fonction de l'heure entrée dedans.
donc, de 00h00 à 23h59 : 24 couleurs
bien sur j'ai vu des tas de réponses en passant par la mise en forme conditionnelle, mais le problème est la restriction des 3 conditions.
merci par avance
A voir également:
- Coloriser plus de 3 conditions
- Ai suite 3 - Télécharger - Optimisation
- Picasa 3 - Télécharger - Albums photo
- Photorecit 3 - Télécharger - Visionnage & Diaporama
- Airpods 3 date de sortie - Guide
- Imagen 3 - Accueil - Applications & Logiciels
13 réponses
Salut
Voila un début de solution. Désolé je n'ai pas excel sous la main avec cette bécane, je n'ai donc pas pu la tester, mais cela devrait ressembler à cela
Crée une macro
Sub CouleurSelonHeure
Option Explicit
dim iHeure As int
iHeure=Hour(Selection) 'On récupère l'heure de la cellule sélectionnée
Select Case iHeure
Case Is = 0
Selection.Interior.ColorIndex = 27
Case Is = 1
Selection.Interior.ColorIndex = 43
Case Is = 2
Selection.Interior.ColorIndex = 31
Case Is = 3
Selection.Interior.ColorIndex = 10
.....
End Select
End Sub
Crée un bouton dans ta feuille et affecte lui cette macro
Cela t'oblige à appuyer sur le bouton à chaque fois mais c'est la première chose qui m'est venue à l'idée.
Voila un début de solution. Désolé je n'ai pas excel sous la main avec cette bécane, je n'ai donc pas pu la tester, mais cela devrait ressembler à cela
Crée une macro
Sub CouleurSelonHeure
Option Explicit
dim iHeure As int
iHeure=Hour(Selection) 'On récupère l'heure de la cellule sélectionnée
Select Case iHeure
Case Is = 0
Selection.Interior.ColorIndex = 27
Case Is = 1
Selection.Interior.ColorIndex = 43
Case Is = 2
Selection.Interior.ColorIndex = 31
Case Is = 3
Selection.Interior.ColorIndex = 10
.....
End Select
End Sub
Crée un bouton dans ta feuille et affecte lui cette macro
Cela t'oblige à appuyer sur le bouton à chaque fois mais c'est la première chose qui m'est venue à l'idée.
désolé de ne pas avoir repondu plus vite mais vacances et stage.
bien, j'ai essayé ta macro mais malheureusement je n'ai pas reussi à la faire fonctionner.
as tu une autre idée?
merci
amicalement
bien, j'ai essayé ta macro mais malheureusement je n'ai pas reussi à la faire fonctionner.
as tu une autre idée?
merci
amicalement
Au temps pour moi, il y avait 2 erreurs dans le code.
Tu peux faire sauter Option Explicit, d'autre par il faut remplacer Dim iHeure As int par Dim iHeure as Integer
Rq les .... correspondent à la suite de ton code
Tu peux faire sauter Option Explicit, d'autre par il faut remplacer Dim iHeure As int par Dim iHeure as Integer
Rq les .... correspondent à la suite de ton code
t'es trop fort et en plus rapide...
ca marche tip top
le problème est que j'ai mal expliqué ce que je voulais EXACTEMENT
méa-culpa
donc je souhaite que les cellules horaires se colorisent automatiquement ou à défaut que je puisse selectionner l'ensemble des cellules pour les coloriser par la macro via un bouton personnalisé par exemple.
houla ais-je été clair?
je récapitule:
j'ai créé un bouton et lui ai affecté la macro que tu m'as proposé.
lorsque je selectionne une cellule contenant un horaire et que je lance la macro, ca fonctionne mais je suis obligé de me taper toute les cellules une par une. De plus, à droite de la cellules contenant l'heure, je doit mettre une description qui doit se coloriser de la couleur de l'horaire lui correspondant.
bon du coup je suis pas sur d'avoir été beaucoup plus clair...
j'espère que tu m'auras tout de même compris et merci encore
amicalement
ca marche tip top
le problème est que j'ai mal expliqué ce que je voulais EXACTEMENT
méa-culpa
donc je souhaite que les cellules horaires se colorisent automatiquement ou à défaut que je puisse selectionner l'ensemble des cellules pour les coloriser par la macro via un bouton personnalisé par exemple.
houla ais-je été clair?
je récapitule:
j'ai créé un bouton et lui ai affecté la macro que tu m'as proposé.
lorsque je selectionne une cellule contenant un horaire et que je lance la macro, ca fonctionne mais je suis obligé de me taper toute les cellules une par une. De plus, à droite de la cellules contenant l'heure, je doit mettre une description qui doit se coloriser de la couleur de l'horaire lui correspondant.
bon du coup je suis pas sur d'avoir été beaucoup plus clair...
j'espère que tu m'auras tout de même compris et merci encore
amicalement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
additif au message precedent:
apres mure reflexion, le tableau serait plus clair sans que les lignes à droite des horaires soient colorisés.
donc en fait je n'ai plus besoins que d'une chose, c'est de ne pas etre obligé de faire la manip sur chaque cellule
merci encore
amicalement
apres mure reflexion, le tableau serait plus clair sans que les lignes à droite des horaires soient colorisés.
donc en fait je n'ai plus besoins que d'une chose, c'est de ne pas etre obligé de faire la manip sur chaque cellule
merci encore
amicalement
Essayes ce code
Private Sub Worksheet_Change(ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
If Target.NumberFormat = "hh:mm" Or Target.NumberFormat = "h:mm" Then 'On ne colorie pas les autres formats que les formats "Heure"
CouleurSelonHeure Target
End If
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
End Sub
Rq: Les cellules doivent être au format Heure
Private Sub Worksheet_Change(ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
If Target.NumberFormat = "hh:mm" Or Target.NumberFormat = "h:mm" Then 'On ne colorie pas les autres formats que les formats "Heure"
CouleurSelonHeure Target
End If
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
End Sub
Rq: Les cellules doivent être au format Heure
J'ai contourné la restriction de format
Private Sub Worksheet_Change(ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
Fin:
End Sub
Désolé à la lecture on ne voit pas les indentations. La structure du code serait plus claire
Limites :
Tu dois recopier ce code pour chaque feuille
Private Sub Worksheet_Change(ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
Fin:
End Sub
Désolé à la lecture on ne voit pas les indentations. La structure du code serait plus claire
Limites :
Tu dois recopier ce code pour chaque feuille
On y arrive
Le code suivant doit être copié dans ThisWorkBook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
Fin:
End Sub
Le code suivant doit être copié dans ThisWorkBook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Sub CouleurSelonHeure(Cellule)
'La liste des ColorIndex est donnée dans l'aide de VBA ColorIndex,Propriété
Dim iHeure As Integer
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
'On est limité à 14 couleurs dont le noir et le blanc
'On va donc distinguer Matin et Après-midi
If iHeure < 12 Then 'Matin
Cellule.Interior.ColorIndex = iHeure + 3
Else
iHeure = iHeure - 12 'Après-Midi
Cellule.Interior.ColorIndex = iHeure + 3
Cellule.Interior.Pattern = xlPatternLightHorizontal 'C'est à mon avis le plus lisible
End If
Fin:
End Sub
t es un vrai chef...
et moi un bourricot, du coup ton code fonctionne à merveille mais, je ne sais pas comment le modifier pour pouvoir faire le choix moi même de la couleur associée au créneau horaire
merci encore pour ton aide
amicalement
et moi un bourricot, du coup ton code fonctionne à merveille mais, je ne sais pas comment le modifier pour pouvoir faire le choix moi même de la couleur associée au créneau horaire
merci encore pour ton aide
amicalement
Il faut utiliser la méthode Colors, elle est très bien décrite dans l'aide
Elle permet de modifier les ColorIndex en leur attribuant des valeurs RGB. Tu peux donc passer a 26 couleurs et supprimer le hachurage pour l'après-midi.
Colors n'est valable que pour le classeur actif donc il faut définir ces couleurs à l'activation du classeur
Private Sub Workbook_Activate()
'On va supposer que les 14 premières conviennent
ThisWorkbook.Colors(15) = RGB(25, 30, 35)
End Sub
Pour définir les couleurs, utilise Paint avec couleur/Modifier les couleurs/Définir les couleurs personnalisées et modifie les valeurs de Rouge, Vert(G), Bleu
Elle permet de modifier les ColorIndex en leur attribuant des valeurs RGB. Tu peux donc passer a 26 couleurs et supprimer le hachurage pour l'après-midi.
Colors n'est valable que pour le classeur actif donc il faut définir ces couleurs à l'activation du classeur
Private Sub Workbook_Activate()
'On va supposer que les 14 premières conviennent
ThisWorkbook.Colors(15) = RGB(25, 30, 35)
End Sub
Pour définir les couleurs, utilise Paint avec couleur/Modifier les couleurs/Définir les couleurs personnalisées et modifie les valeurs de Rouge, Vert(G), Bleu
je te remercie du temps que tu as passé sur mon problème.
j'ai reussi à bidouiller ton code et à obtenir ce que je voulai
je te le montre et le mets à disposition de tout ceux qui serait dans la même attente
amicalement
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Private Sub CouleurSelonHeure(Cellule)
Dim iHeure As Integer
Dim listcolor As Variant
listcolor = Array(RGB(255, 223, 223), RGB(223, 255, 223), RGB(223, 255, 255))
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
Cellule.Interior.Color = listcolor(iHeure)
Fin:
End Sub
j'ai reussi à bidouiller ton code et à obtenir ce que je voulai
je te le montre et le mets à disposition de tout ceux qui serait dans la même attente
amicalement
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'S'exécute automatiquement à chaque changement de valeur de cellule
'Voir l'aide de VBA Worksheet_Change
CouleurSelonHeure Target
End Sub
Private Sub CouleurSelonHeure(Cellule)
Dim iHeure As Integer
Dim listcolor As Variant
listcolor = Array(RGB(255, 223, 223), RGB(223, 255, 223), RGB(223, 255, 255))
On Error GoTo Fin:
iHeure = Hour(Cellule) 'On récupère l'heure de la cellule sélectionnée
Cellule.Interior.Color = listcolor(iHeure)
Fin:
End Sub