Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formatage selections de cellules selon valeur d'une variable

5 réponses
Avatar
Domi
Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la ligne
active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H) qui
contiennent des valeurs numériques. Je voudrais faire varier la couleur de
ces cellules selon que le contenu soit > ou pas à dispojour. Et là ça va
plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup de
main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D], [Tps_E],
[Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next

5 réponses

Avatar
JLuc
*Bonjour Domi*,
Dans la théorie, ton code devrait fonctionner.
Essaie de mettre un point d'arrêt sur le For pour voir ce qui se passe
réellement et contrôler les variables utilisées

Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la ligne
active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"), Range("PrevB"),
Range("PrevC"), Range("PrevC"), Range("PrevD"), Range("PrevE"))) Is Nothing
Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H) qui
contiennent des valeurs numériques. Je voudrais faire varier la couleur de
ces cellules selon que le contenu soit > ou pas à dispojour. Et là ça va
plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup de
main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D], [Tps_E],
[Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
Daniel
Bonjour.
Il faut que les deux parties de code fassent partie de la même macro ou que
la variable dispojour soit déclarée comme publique.
Cordialement.
Daniel
"Domi" a écrit dans le message de news:
%234%
Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la ligne
active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H) qui
contiennent des valeurs numériques. Je voudrais faire varier la couleur de
ces cellules selon que le contenu soit > ou pas à dispojour. Et là ça va
plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup de
main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D], [Tps_E],
[Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next




Avatar
Domi
Merci pour vos conseils
j'ai modifié un peu le code pour vérifier les valeurs
tout est dans la même macro (recopie integrale plus bas)
le déroulement est bon; les cellules changent bien de couleur mais pour
devenir systematiquement noires !!! (quelle que soit la valeur de couleur
dans la macro) J'en arrive à soupconner un bug... Grrrr...
Domi


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Cette première partie sert pour autre chose et n'a pas de rapport avec le
formatage couleur des cellules...
If Not Intersect(Target, Union(Range("Plgnbmax"), Range("PlgTps"),
Range("Pot"), Range("PrevA"), Range("PrevB"), Range("PrevC"),
Range("PrevC"), Range("PrevD"), Range("PrevE"))) Is Nothing And Target.Count
= 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) &
Target.Value & Chr(34)
End If

'Formatage conditionnel des temps selon possibilité de saisie
If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing And Target.Count = 1 Then
'On note le temps restant Dispo jour (Col E) pour le jour de la cellule
active
dispojour = Cells(Target.Row, "E").Value
MsgBox dispojour
For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D],
[Tps_E], [Tps_F], [Tps_G], [Tps_H])
delta = dispojour - Cell.Value
MsgBox delta
If delta >= 0 Then
'If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 45
End If
Next
End if
End sub

"Daniel" a écrit dans le message de news:

Bonjour.
Il faut que les deux parties de code fassent partie de la même macro ou
que la variable dispojour soit déclarée comme publique.
Cordialement.
Daniel
"Domi" a écrit dans le message de news:
%234%
Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la
ligne active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H) qui
contiennent des valeurs numériques. Je voudrais faire varier la couleur
de ces cellules selon que le contenu soit > ou pas à dispojour. Et là ça
va plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup
de main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D], [Tps_E],
[Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next








Avatar
Daniel
Remplace "color" par "colorindex".
Daniel
"Domi" a écrit dans le message de news:

Merci pour vos conseils
j'ai modifié un peu le code pour vérifier les valeurs
tout est dans la même macro (recopie integrale plus bas)
le déroulement est bon; les cellules changent bien de couleur mais pour
devenir systematiquement noires !!! (quelle que soit la valeur de couleur
dans la macro) J'en arrive à soupconner un bug... Grrrr...
Domi


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Cette première partie sert pour autre chose et n'a pas de rapport avec le
formatage couleur des cellules...
If Not Intersect(Target, Union(Range("Plgnbmax"), Range("PlgTps"),
Range("Pot"), Range("PrevA"), Range("PrevB"), Range("PrevC"),
Range("PrevC"), Range("PrevD"), Range("PrevE"))) Is Nothing And
Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) &
Target.Value & Chr(34)
End If

'Formatage conditionnel des temps selon possibilité de saisie
If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing And Target.Count = 1 Then
'On note le temps restant Dispo jour (Col E) pour le jour de la cellule
active
dispojour = Cells(Target.Row, "E").Value
MsgBox dispojour
For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D],
[Tps_E], [Tps_F], [Tps_G], [Tps_H])
delta = dispojour - Cell.Value
MsgBox delta
If delta >= 0 Then
'If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 45
End If
Next
End if
End sub

"Daniel" a écrit dans le message de news:

Bonjour.
Il faut que les deux parties de code fassent partie de la même macro ou
que la variable dispojour soit déclarée comme publique.
Cordialement.
Daniel
"Domi" a écrit dans le message de news:
%234%
Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la
ligne active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H)
qui contiennent des valeurs numériques. Je voudrais faire varier la
couleur de ces cellules selon que le contenu soit > ou pas à dispojour.
Et là ça va plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup
de main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D],
[Tps_E], [Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next












Avatar
Domi
CQFD...et la lumière fut ;o)
Merci
Domi

"Daniel" a écrit dans le message de news:

Remplace "color" par "colorindex".
Daniel
"Domi" a écrit dans le message de news:

Merci pour vos conseils
j'ai modifié un peu le code pour vérifier les valeurs
tout est dans la même macro (recopie integrale plus bas)
le déroulement est bon; les cellules changent bien de couleur mais pour
devenir systematiquement noires !!! (quelle que soit la valeur de couleur
dans la macro) J'en arrive à soupconner un bug... Grrrr...
Domi


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Cette première partie sert pour autre chose et n'a pas de rapport avec
le formatage couleur des cellules...
If Not Intersect(Target, Union(Range("Plgnbmax"), Range("PlgTps"),
Range("Pot"), Range("PrevA"), Range("PrevB"), Range("PrevC"),
Range("PrevC"), Range("PrevD"), Range("PrevE"))) Is Nothing And
Target.Count = 1 Then
ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) &
Target.Value & Chr(34)
End If

'Formatage conditionnel des temps selon possibilité de saisie
If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing And Target.Count = 1 Then
'On note le temps restant Dispo jour (Col E) pour le jour de la cellule
active
dispojour = Cells(Target.Row, "E").Value
MsgBox dispojour
For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D],
[Tps_E], [Tps_F], [Tps_G], [Tps_H])
delta = dispojour - Cell.Value
MsgBox delta
If delta >= 0 Then
'If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 45
End If
Next
End if
End sub

"Daniel" a écrit dans le message de news:

Bonjour.
Il faut que les deux parties de code fassent partie de la même macro ou
que la variable dispojour soit déclarée comme publique.
Cordialement.
Daniel
"Domi" a écrit dans le message de news:
%234%
Bonjour,
A chaque changement de selection dans une plage définie, je voudrais :
1°) relever une valeur numérique (dispojour) dans la colonne E de la
ligne active (ça marche jusque là..)
Sur l'evenement change selection de la feuille....

If Not Intersect(Target, Union(Range("dat"), Range("PrevA"),
Range("PrevB"), Range("PrevC"), Range("PrevC"), Range("PrevD"),
Range("PrevE"))) Is Nothing Then
dispojour = Cells(Target.Row, "E").Value

2°) j'ai dans la même feuille, 8 cellules nommées (Tps_A.... à Tps_H)
qui contiennent des valeurs numériques. Je voudrais faire varier la
couleur de ces cellules selon que le contenu soit > ou pas à dispojour.
Et là ça va plus...
Une petite correction s'impose, quelqu'un pourrait-il me donner un coup
de main ?
Merci
Domi


For Each Cell In Union([Tps_A], [Tps_B], [Tps_C], [Tps_D],
[Tps_E], [Tps_F], [Tps_G], [Tps_H])
If Cell.Value <= dispojour Then
Cell.Interior.Color = 4
Else
Cell.Interior.Color = 44
End If
Next