Microsoft 365 colorier une rangée de cellules

Marvin57

XLDnaute Occasionnel
tout le monde,

dans le code ci dessous Franc58 m'a modifié ce dernier pour mettre en couleur la cellule de jour sélectionnée.
Cela fonctionne très bien.

VB:
   For Each Cell In ActiveSheet.Range("B5:AF159")
    If Cell.Value = [Today()] Then
    Cell.Select
    Cell.Interior.Color = RGB(0, 255, 0)
    Cell.Font.Color = RGB(255, 0, 0)
    End If
Next

J'avais oublié un détail.

Est-il possible de lui dire de colorier également les 10 cellules en dessous de la cellule sélectionnée ?

Merci d'avance à vous tous pour votre aide

Marvin57
 
Solution
J'abonde dans la formule MFC:
1710842645120.png

Avec en module :
VB:
Function Tod(Cel As Range) As Boolean
    If Cel = Date Then
        Tod = True
    Else
        For L = Cel.Row To Application.Max(Cel.Row - 10, 1) Step -1
            If Cells(L, Cel.Column) = Date Then
                Tod = True
                Exit For
            End If
        Next
    End If
End Function

Marvin57

XLDnaute Occasionnel
Bonjour à tous,

Une MFC fait cela également.

JHA
Bonjour JHA,

Merci pour ce retour mais cela n'est pas comme voulu.

J'explique :

les dates sont sur une ligne et lorsqu'il sélectionne la date du jour à l'activation de l'onglet, il devrait, si possible, me colorier également les 10 cellules en dessous de la cellule sélectionnée.

voici ci dessous une image d'une partie de l'onglet et ses dates. Donc si par exemple nous sommes aujourd'hui le Lundi 17 il faudrait qu'il mette en couleur la cellule du lundi 17 ainsi que les 10 cellules en dessous.

exemple1.png

Merci
 

Marvin57

XLDnaute Occasionnel
Bonjour à tous,

Comme tu ne joins pas de fichier exemple, il est difficile de te répondre correctement.
A tout hasard

JHA
Re,

oui je sais c'est compliqué sans fichier, mais cela est très compliqué de démonter mon classeur complet, je suis désolé.

J'ai essayé votre version mais cela ne fonctionne pas. Je pensais, si je puis dire, que cela pourrait se faire dans le code vba.

Quoi dire !
 

fanch55

XLDnaute Barbatruc
Salut à tous,
A essayer:
VB:
Sub test()
Dim Target
    Set Target = [B5:AF159].Find(Date, , xlValues, xlWhole)
    Do While Not Target Is Nothing
        If adr = "" Then adr = Target.Address
        With Target.Resize(10)
            .Interior.Color = RGB(0, 255, 0)
            .Font.Color = RGB(255, 0, 0)
        End With
        Set Target = [B5:AF159].FindNext(Target)
        If adr = Target.Address Then Set Target = Nothing
    Loop
End Sub
 

Marvin57

XLDnaute Occasionnel
Salut à tous,
A essayer:
VB:
Sub test()
Dim Target
    Set Target = [B5:AF159].Find(Date, , xlValues, xlWhole)
    Do While Not Target Is Nothing
        If adr = "" Then adr = Target.Address
        With Target.Resize(10)
            .Interior.Color = RGB(0, 255, 0)
            .Font.Color = RGB(255, 0, 0)
        End With
        Set Target = [B5:AF159].FindNext(Target)
        If adr = Target.Address Then Set Target = Nothing
    Loop
End Sub
Bonjour fanch55,

Merci pour votre aide.

alors j'ai placé ce code dans un module standard, j'ai essayé en l'appelant et cela ne fonctionne pas !

je l'ai ensuite placé dans l'onglet, mais il ne fonctionne pas !

Est-ce que je l'ai mal placé ?
 

TooFatBoy

XLDnaute Barbatruc
Oui tout à fait
Ah bon ? Parce que d'après ce qu'on voit sur la capture d'écran de #4, ça n'a rien à voir avec la cellule sélectionnée.

Je posais la question parce que si c'est pour colorier une cellule et les 9 du dessous, il suffit d'ajouter un .resize(10,1).


[edit]
Je crois que j'ai compris : tu veux dire "sélectionnée" par rapport à ton code de #1 où il y a Select (qui me semble inutile, du coup je l'avais directement zappé... 😔) ???
[/edit]
 

fanch55

XLDnaute Barbatruc
Bonjour fanch55,

Merci pour votre aide.

alors j'ai placé ce code dans un module standard, j'ai essayé en l'appelant et cela ne fonctionne pas !

je l'ai ensuite placé dans l'onglet, mais il ne fonctionne pas !

Est-ce que je l'ai mal placé ?
Chez moi, tout fonctionne normalement (code dans le module de la feuille):
1710788015867.png

Si cela ne fonctionne pas chez vous, je ne pourrai rien faire de plus sans un classeur exemple ...

Ceci dit, le temps s'écoulant, vous allez avoir toutes les colonnes+10 colorées en vert ...
 

TooFatBoy

XLDnaute Barbatruc
Je suis du même avis que JHA : pour colorier la date du jour, rien ne vaut une MFC ! ;)

Si tu effectues le coloriage de la colonne du jour par VBA, il faut alors commencer par "décolorier" toutes les colonnes du mois avant de colorier la colonne du jour sinon, comme l'a dit fanch55, tu vas finir par avoir tout le mois colorié si tu ouvres ton classeur tous les jours...
 

Marvin57

XLDnaute Occasionnel
Je suis du même avis que JHA : pour colorier la date du jour, rien ne vaut une MFC.

Si tu effectue le coloriage de la colonne du jour par VBA, il faut alors commencer par "décolorier" toutes les colonnes du mois avant de colorier la colonne du jour sinon, comme l'a dit fanch55, tu vas finir par avoir tout le mois colorié si tu ouvres ton classeur tous les jours...

OK, la nuit porte conseil.
Je vais y réfléchir.
Merci pour les bonnes informations.
A demain
 

fanch55

XLDnaute Barbatruc
J'abonde dans la formule MFC:
1710842645120.png

Avec en module :
VB:
Function Tod(Cel As Range) As Boolean
    If Cel = Date Then
        Tod = True
    Else
        For L = Cel.Row To Application.Max(Cel.Row - 10, 1) Step -1
            If Cells(L, Cel.Column) = Date Then
                Tod = True
                Exit For
            End If
        Next
    End If
End Function
 

Discussions similaires

Réponses
2
Affichages
124
Réponses
0
Affichages
151

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame