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

Formatage conditionel en VBA

13 réponses
Avatar
rthompson
Bonjour à toutes et tous

Voici mon petit (tout petit, petit, petit) pour cette fin de semaine

Ce petit bout de macro (merci le groupe) prends en compte la valeur d'une
cellule
et si cette valeur est "Invoiced" alors la ligne prends la couleur choisie

If C.Value = "Invoiced" Then
With Range(Cells(C.Row, "A"), Cells(C.Row, "H"))
.Interior.ColorIndex = 46
End With
End If

Et cela fonctionne impeccable

Mais, parce qu'il en faut toujours un :-))))

Je voudrais EN PLUS qu'une cellule, celle de la colonne A pour ne pas la
nimmer
change de couleur si la cellule de la colonne I de la même ligne
est inférieure à la valeur de la cellule N1 (Today) + 30
( Les petits malins, et vous êtes nombreux ont compris qu'il s'agait de date
d'échéance!)

Pour le moment cela se fait par Formatage Conditionnel

La formule est =I38<$N$1+30

Si cette condition est remplie la cellule passe en rouge avec texte gras en
jaune

J'aimerais inclure cela dans la macro, est-ce possible????
Et qu'en plus elle glignote :-))))) (pas nécessaire)


Je ne serai pas devant mon PC avant demain (samedi) midi

D'ici la, si quelqu'un à une idée..........


D'avance merci et à bientôt

Et pour les habitués qui partent bientôt


BONNES VACANCES


Rex

3 réponses

1 2
Avatar
rthompson
Bonjour

Ici, en Belgique, nous avons droit à un lundi merveilleux

Et en plus ma macro fonctionne impeccable

Excel refuse d'utiliser le c deux fois dans la même boucle
mais avec un c et un d tout va bien

Merci à toi et à bientôt

Rex




"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour,
A priori, deux boucles successives avec la même variable doivent pouvoir
tourner sans se mêler les pinceaux.
Nonobstant, dans la mesure où chacune de ces boucles a une utilité
différente, il est préférable AMHA d'utiliser deux variables différentes ;
question de lisibilité du code.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"rthompson" a écrit dans le message de
news:
Bonjour

ET MERCI
Cela fonctionne

j'ai juste du supprimer ton +30,
puisque on compare la date d'échéance à celle d'aujourd'hui

Merci beaucoup

Il ne me reste plus qu'a essayer de l'intégrer dans ma macro

Donc j'ai une petite question
peut-on dans une même macro avoir deux fois For each c
ou doit-on mettre lors de la deuxième for each d

Petit exemple ci-dessous
Ou faudrait-il insérer ton bout de code
Ou alors je me fais un petit bouton
Ce qui est facile et non problemo for me


A bientôt

Rex

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Private Sub ToggleButton7_Click()
'ActiveSheet.Unprotect
DoEvents

Application.ScreenUpdating = False
For Each c In Range("H6:H185")
If c.Value = Cells(7, "L") Then c.EntireRow.Hidden = Cells(7, "M")
Next
Application.ScreenUpdating = True
ToggleButton7.Caption = Cells(7, "M").Offset(0, -1)
ToggleButton7.BackColor = IIf(Cells(7, "M"), vbRed, vbGreen)
Rows("10:28").Select
Selection.Interior.ColorIndex = xlNone

For Each c In Range("H10:H600") ' Ou alors par noms dynamique
"Listingstatus"
If IsError(c.Value) Then
c.EntireRow.Hidden = True
Else

If c.Value = "Invoice Requested" Then
With Range(Cells(c.Row, "A"), Cells(c.Row, "H"))
.Interior.ColorIndex = 43
' .Pattern = xlSolid
' .PatternColorIndex = xlAutomatic
End With
End If
Next c
Range("H6").Select
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End Sub

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx





"JPMonnier" a écrit dans le message de news:
O%
Salut Rex
essaie la proc avec la distribution de ton message

Sub Coul_Condit()
For Each c In ActiveSheet.[H2:H100 ] ' zone des cellules à comparer avec
N1 ouse trouve la date du jour
If c = "Invoiced" And c.Offset(0, -7) < (Range("N1") + 30) Then
c.Offset(0, -7).Interior.ColorIndex = 3 'couleur cellule
c.Offset(0, -7).Font.ColorIndex = 6 'couleur fonte
c.Offset(0, -7).Font.Bold = True 'cellule en gras
End If
Next
End Sub

A+
--
Cordialement

"rthompson" a écrit dans le message
de news:
Bonjour

Et merci

En effet elle fait exactement ce que j'ai demandé
Et je me rends compte ce matin que hier je devais être totalement "OUT"

Ce n'est pas du tout ce que je cherche à faire est ceci

Dans le p'tit bout de table ci-dessous
Si le statut de la colonne H est "Invoiced"
et que la date de la colonne A est plus grande que celle d'aujourd'hui
(qui se trouve en N1 ou on peut utiliser Today() dans la macro)
alors, la cellule correspondante de la colonne A doit être "Texte gras
jaune sur fond rouge"

Tu vois, ce n'est pas du tout, mais la alors pas du tout du tout du
tout ce que je demandais hier soir


A B C D E F G H I

Due Sale Cost Profit Name Offered
Cust Status Last action

24-07-08 3.300 ? 2.535 ? 765 ? fffff 0-07-08 der
Invoiced 24-06-08

21-02-08 4.279 ? 3.816 ? 463 ? ffffffff 9-07-08 jhnbg
Invoiced 22-01-08



Donc j'ai essayé d'adapter ton code
mais je me plante depuis ce matin

A mon avis mon cerveau exige des vacances

Je suppose qu'il faudra déclarer deux variables en début de code
une pour savoir si on est en INVOICED
et une pour savoir si l'échéance est dépassée

Et je coule, je coule, je coule



Si tu as une idée, sinon je recommencerai un autre fil

A bientôt

Et merci

Rex







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

Bonjour,
cette sub devrait répondre à tes besoins

Sub Coul_Condit()
For Each c In ActiveSheet.[a1:a12]' zone des cellules à comparer avec
N1 ou se trouve la date du jour
If c < (Range("N1") + 30) Then
c.Offset.Interior.ColorIndex = 3 'couleur cellule
c.Offset.Font.ColorIndex = 6 'couleur fonte
c.Offset.Font.Bold = True 'cellule en gras
End If
Next
End Sub


"rthompson" a écrit dans le message
de news:
Bonjour à toutes et tous

Voici mon petit (tout petit, petit, petit) pour cette fin de semaine

Ce petit bout de macro (merci le groupe) prends en compte la valeur
d'une cellule
et si cette valeur est "Invoiced" alors la ligne prends la couleur
choisie

If C.Value = "Invoiced" Then
With Range(Cells(C.Row, "A"), Cells(C.Row, "H"))
.Interior.ColorIndex = 46
End With
End If

Et cela fonctionne impeccable

Mais, parce qu'il en faut toujours un :-))))

Je voudrais EN PLUS qu'une cellule, celle de la colonne A pour ne pas
la nimmer
change de couleur si la cellule de la colonne I de la même ligne
est inférieure à la valeur de la cellule N1 (Today) + 30
( Les petits malins, et vous êtes nombreux ont compris qu'il s'agait
de date d'échéance!)

Pour le moment cela se fait par Formatage Conditionnel

La formule est =I38<$N$1+30

Si cette condition est remplie la cellule passe en rouge avec texte
gras en jaune

J'aimerais inclure cela dans la macro, est-ce possible????
Et qu'en plus elle glignote :-))))) (pas nécessaire)


Je ne serai pas devant mon PC avant demain (samedi) midi

D'ici la, si quelqu'un à une idée..........


D'avance merci et à bientôt

Et pour les habitués qui partent bientôt


BONNES VACANCES


Rex


























Avatar
Philippe.R
Bonsoir,
Un refus pour 2 fois la même variable utilisée dans des boucles imbriquées
était bien prévisible.
Ici aussi, grand soleil toute la journée.
:o)))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"rthompson" a écrit dans le message de
news:
Bonjour

Ici, en Belgique, nous avons droit à un lundi merveilleux

Et en plus ma macro fonctionne impeccable

Excel refuse d'utiliser le c deux fois dans la même boucle
mais avec un c et un d tout va bien

Merci à toi et à bientôt

Rex




"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonjour,
A priori, deux boucles successives avec la même variable doivent pouvoir
tourner sans se mêler les pinceaux.
Nonobstant, dans la mesure où chacune de ces boucles a une utilité
différente, il est préférable AMHA d'utiliser deux variables différentes
; question de lisibilité du code.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"rthompson" a écrit dans le message de
news:
Bonjour

ET MERCI
Cela fonctionne

j'ai juste du supprimer ton +30,
puisque on compare la date d'échéance à celle d'aujourd'hui

Merci beaucoup

Il ne me reste plus qu'a essayer de l'intégrer dans ma macro

Donc j'ai une petite question
peut-on dans une même macro avoir deux fois For each c
ou doit-on mettre lors de la deuxième for each d

Petit exemple ci-dessous
Ou faudrait-il insérer ton bout de code
Ou alors je me fais un petit bouton
Ce qui est facile et non problemo for me


A bientôt

Rex

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Private Sub ToggleButton7_Click()
'ActiveSheet.Unprotect
DoEvents

Application.ScreenUpdating = False
For Each c In Range("H6:H185")
If c.Value = Cells(7, "L") Then c.EntireRow.Hidden = Cells(7,
"M")
Next
Application.ScreenUpdating = True
ToggleButton7.Caption = Cells(7, "M").Offset(0, -1)
ToggleButton7.BackColor = IIf(Cells(7, "M"), vbRed, vbGreen)
Rows("10:28").Select
Selection.Interior.ColorIndex = xlNone

For Each c In Range("H10:H600") ' Ou alors par noms dynamique
"Listingstatus"
If IsError(c.Value) Then
c.EntireRow.Hidden = True
Else

If c.Value = "Invoice Requested" Then
With Range(Cells(c.Row, "A"), Cells(c.Row, "H"))
.Interior.ColorIndex = 43
' .Pattern = xlSolid
' .PatternColorIndex =
xlAutomatic
End With
End If
Next c
Range("H6").Select
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End Sub

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx





"JPMonnier" a écrit dans le message de news:
O%
Salut Rex
essaie la proc avec la distribution de ton message

Sub Coul_Condit()
For Each c In ActiveSheet.[H2:H100 ] ' zone des cellules à comparer
avec N1 ouse trouve la date du jour
If c = "Invoiced" And c.Offset(0, -7) < (Range("N1") + 30) Then
c.Offset(0, -7).Interior.ColorIndex = 3 'couleur cellule
c.Offset(0, -7).Font.ColorIndex = 6 'couleur fonte
c.Offset(0, -7).Font.Bold = True 'cellule en gras
End If
Next
End Sub

A+
--
Cordialement

"rthompson" a écrit dans le message
de news:
Bonjour

Et merci

En effet elle fait exactement ce que j'ai demandé
Et je me rends compte ce matin que hier je devais être totalement
"OUT"

Ce n'est pas du tout ce que je cherche à faire est ceci

Dans le p'tit bout de table ci-dessous
Si le statut de la colonne H est "Invoiced"
et que la date de la colonne A est plus grande que celle d'aujourd'hui
(qui se trouve en N1 ou on peut utiliser Today() dans la macro)
alors, la cellule correspondante de la colonne A doit être "Texte gras
jaune sur fond rouge"

Tu vois, ce n'est pas du tout, mais la alors pas du tout du tout du
tout ce que je demandais hier soir


A B C D E F G H I

Due Sale Cost Profit Name Offered
Cust Status Last action

24-07-08 3.300 ? 2.535 ? 765 ? fffff 0-07-08 der
Invoiced 24-06-08

21-02-08 4.279 ? 3.816 ? 463 ? ffffffff 9-07-08 jhnbg
Invoiced 22-01-08



Donc j'ai essayé d'adapter ton code
mais je me plante depuis ce matin

A mon avis mon cerveau exige des vacances

Je suppose qu'il faudra déclarer deux variables en début de code
une pour savoir si on est en INVOICED
et une pour savoir si l'échéance est dépassée

Et je coule, je coule, je coule



Si tu as une idée, sinon je recommencerai un autre fil

A bientôt

Et merci

Rex







"JPMonnier" a écrit dans le message de
news:
Bonjour,
cette sub devrait répondre à tes besoins

Sub Coul_Condit()
For Each c In ActiveSheet.[a1:a12]' zone des cellules à comparer avec
N1 ou se trouve la date du jour
If c < (Range("N1") + 30) Then
c.Offset.Interior.ColorIndex = 3 'couleur cellule
c.Offset.Font.ColorIndex = 6 'couleur fonte
c.Offset.Font.Bold = True 'cellule en gras
End If
Next
End Sub


"rthompson" a écrit dans le
message de news:
Bonjour à toutes et tous

Voici mon petit (tout petit, petit, petit) pour cette fin de semaine

Ce petit bout de macro (merci le groupe) prends en compte la valeur
d'une cellule
et si cette valeur est "Invoiced" alors la ligne prends la couleur
choisie

If C.Value = "Invoiced" Then
With Range(Cells(C.Row, "A"), Cells(C.Row, "H"))
.Interior.ColorIndex = 46
End With
End If

Et cela fonctionne impeccable

Mais, parce qu'il en faut toujours un :-))))

Je voudrais EN PLUS qu'une cellule, celle de la colonne A pour ne
pas la nimmer
change de couleur si la cellule de la colonne I de la même ligne
est inférieure à la valeur de la cellule N1 (Today) + 30
( Les petits malins, et vous êtes nombreux ont compris qu'il s'agait
de date d'échéance!)

Pour le moment cela se fait par Formatage Conditionnel

La formule est =I38<$N$1+30

Si cette condition est remplie la cellule passe en rouge avec texte
gras en jaune

J'aimerais inclure cela dans la macro, est-ce possible????
Et qu'en plus elle glignote :-))))) (pas nécessaire)


Je ne serai pas devant mon PC avant demain (samedi) midi

D'ici la, si quelqu'un à une idée..........


D'avance merci et à bientôt

Et pour les habitués qui partent bientôt


BONNES VACANCES


Rex






























Avatar
rthompson
Bonjour et merci de participer

A bientôt

Rex

Mardi et DEUX (je dis bien DEUX jours de soleil)

"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:

Bonsoir,
Un refus pour 2 fois la même variable utilisée dans des boucles imbriquées
était bien prévisible.
Ici aussi, grand soleil toute la journée.
:o)))
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"rthompson" a écrit dans le message de
news:
Bonjour

Ici, en Belgique, nous avons droit à un lundi merveilleux

Et en plus ma macro fonctionne impeccable

Excel refuse d'utiliser le c deux fois dans la même boucle
mais avec un c et un d tout va bien

Merci à toi et à bientôt

Rex




"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour,
A priori, deux boucles successives avec la même variable doivent pouvoir
tourner sans se mêler les pinceaux.
Nonobstant, dans la mesure où chacune de ces boucles a une utilité
différente, il est préférable AMHA d'utiliser deux variables différentes
; question de lisibilité du code.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"rthompson" a écrit dans le message
de news:
Bonjour

ET MERCI
Cela fonctionne

j'ai juste du supprimer ton +30,
puisque on compare la date d'échéance à celle d'aujourd'hui

Merci beaucoup

Il ne me reste plus qu'a essayer de l'intégrer dans ma macro

Donc j'ai une petite question
peut-on dans une même macro avoir deux fois For each c
ou doit-on mettre lors de la deuxième for each d

Petit exemple ci-dessous
Ou faudrait-il insérer ton bout de code
Ou alors je me fais un petit bouton
Ce qui est facile et non problemo for me


A bientôt

Rex

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Private Sub ToggleButton7_Click()
'ActiveSheet.Unprotect
DoEvents

Application.ScreenUpdating = False
For Each c In Range("H6:H185")
If c.Value = Cells(7, "L") Then c.EntireRow.Hidden = Cells(7,
"M")
Next
Application.ScreenUpdating = True
ToggleButton7.Caption = Cells(7, "M").Offset(0, -1)
ToggleButton7.BackColor = IIf(Cells(7, "M"), vbRed, vbGreen)
Rows("10:28").Select
Selection.Interior.ColorIndex = xlNone

For Each c In Range("H10:H600") ' Ou alors par noms dynamique
"Listingstatus"
If IsError(c.Value) Then
c.EntireRow.Hidden = True
Else

If c.Value = "Invoice Requested" Then
With Range(Cells(c.Row, "A"), Cells(c.Row, "H"))
.Interior.ColorIndex = 43
' .Pattern = xlSolid
' .PatternColorIndex =
xlAutomatic
End With
End If
Next c
Range("H6").Select
'ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End Sub

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx





"JPMonnier" a écrit dans le message de news:
O%
Salut Rex
essaie la proc avec la distribution de ton message

Sub Coul_Condit()
For Each c In ActiveSheet.[H2:H100 ] ' zone des cellules à comparer
avec N1 ouse trouve la date du jour
If c = "Invoiced" And c.Offset(0, -7) < (Range("N1") + 30) Then
c.Offset(0, -7).Interior.ColorIndex = 3 'couleur cellule
c.Offset(0, -7).Font.ColorIndex = 6 'couleur fonte
c.Offset(0, -7).Font.Bold = True 'cellule en gras
End If
Next
End Sub

A+
--
Cordialement

"rthompson" a écrit dans le message
de news:
Bonjour

Et merci

En effet elle fait exactement ce que j'ai demandé
Et je me rends compte ce matin que hier je devais être totalement
"OUT"

Ce n'est pas du tout ce que je cherche à faire est ceci

Dans le p'tit bout de table ci-dessous
Si le statut de la colonne H est "Invoiced"
et que la date de la colonne A est plus grande que celle
d'aujourd'hui
(qui se trouve en N1 ou on peut utiliser Today() dans la macro)
alors, la cellule correspondante de la colonne A doit être "Texte
gras jaune sur fond rouge"

Tu vois, ce n'est pas du tout, mais la alors pas du tout du tout du
tout ce que je demandais hier soir


A B C D E F G H I

Due Sale Cost Profit Name
Offered Cust Status Last action

24-07-08 3.300 ? 2.535 ? 765 ? fffff 0-07-08 der
Invoiced 24-06-08

21-02-08 4.279 ? 3.816 ? 463 ? ffffffff 9-07-08
jhnbg Invoiced 22-01-08



Donc j'ai essayé d'adapter ton code
mais je me plante depuis ce matin

A mon avis mon cerveau exige des vacances

Je suppose qu'il faudra déclarer deux variables en début de code
une pour savoir si on est en INVOICED
et une pour savoir si l'échéance est dépassée

Et je coule, je coule, je coule



Si tu as une idée, sinon je recommencerai un autre fil

A bientôt

Et merci

Rex







"JPMonnier" a écrit dans le message de
news:
Bonjour,
cette sub devrait répondre à tes besoins

Sub Coul_Condit()
For Each c In ActiveSheet.[a1:a12]' zone des cellules à comparer
avec N1 ou se trouve la date du jour
If c < (Range("N1") + 30) Then
c.Offset.Interior.ColorIndex = 3 'couleur cellule
c.Offset.Font.ColorIndex = 6 'couleur fonte
c.Offset.Font.Bold = True 'cellule en gras
End If
Next
End Sub


"rthompson" a écrit dans le
message de news:
Bonjour à toutes et tous

Voici mon petit (tout petit, petit, petit) pour cette fin de
semaine

Ce petit bout de macro (merci le groupe) prends en compte la valeur
d'une cellule
et si cette valeur est "Invoiced" alors la ligne prends la couleur
choisie

If C.Value = "Invoiced" Then
With Range(Cells(C.Row, "A"), Cells(C.Row, "H"))
.Interior.ColorIndex = 46
End With
End If

Et cela fonctionne impeccable

Mais, parce qu'il en faut toujours un :-))))

Je voudrais EN PLUS qu'une cellule, celle de la colonne A pour ne
pas la nimmer
change de couleur si la cellule de la colonne I de la même ligne
est inférieure à la valeur de la cellule N1 (Today) + 30
( Les petits malins, et vous êtes nombreux ont compris qu'il
s'agait de date d'échéance!)

Pour le moment cela se fait par Formatage Conditionnel

La formule est =I38<$N$1+30

Si cette condition est remplie la cellule passe en rouge avec texte
gras en jaune

J'aimerais inclure cela dans la macro, est-ce possible????
Et qu'en plus elle glignote :-))))) (pas nécessaire)


Je ne serai pas devant mon PC avant demain (samedi) midi

D'ici la, si quelqu'un à une idée..........


D'avance merci et à bientôt

Et pour les habitués qui partent bientôt


BONNES VACANCES


Rex

































1 2