Coloration cellules

Bonjour à tous,

Je souhaiterais apporter une petite modification à mon classeur calendrier.
Chaque mois, j'affecte une donnée dans une cellule via le menu déroulant. Je souhaiterais donc modifier les cellules de la colonne "Noms" du mois suivant si j'ai affecté une donnée particulière dans le mois en cours et en fonction de la date. Mes données a retenir sont "CP" et "CPA".
Par exemple:

  • si X (ligne 7) se voit affecté "CP" entre le 1er et le 17 du mois d'aout, X (ligne 7) du mois de septembre est colorié vert
  • si X (ligne 7) se voit affecté "CP" entre le 18 et le 24 du mois d'aout, X (ligne 7) du mois de septembre est colorié orange
  • si X (ligne 7) se voit affecté "CP" entre le 25 et le 31 du mois d'aout, X (ligne 7) du mois de septembre est colorié rouge

merci

désolé, fichier sans le mot de passe ci-dessous

Bonjour,

Essayez ceci, créez un bouton et affectez-y cette macro.

Sub Marquage_Noms()
    Dim i As Long, y As Long, DerLig As Long
    Dim f1 As Worksheet, f2 As Worksheet
    Application.ScreenUpdating = False
    For i = 1 To Sheets.Count
        On Error GoTo SortieErreur
        If Sheets(i).Name <> "Récap" And Sheets(i).Name <> "Base de donnée" And Sheets(i).Name <> "Explications" Then
        Set f1 = Sheets(Sheets(i).Name)
            Select Case f1.Name
                Case Is = "Janvier"
                    Set f2 = Sheets("Décembre")
                Case Is = "Février"
                    Set f2 = Sheets("Janvier")
                Case Is = "Mars"
                    Set f2 = Sheets("Février")
                Case "Avril"
                    Set f2 = Sheets("Mars")
                Case Is = "Mai"
                    Set f2 = Sheets("Avril")
                Case Is = "Juin"
                    Set f2 = Sheets("Mai")
                Case Is = "Juillet"
                    Set f2 = Sheets("Juin")
                Case Is = "Août"
                    Set f2 = Sheets("Juillet")
                Case Is = "Septembre"
                    Set f2 = Sheets("Août")
                Case Is = "Octobre"
                    Set f2 = Sheets("Septembre")
                Case Is = "Novembre"
                    Set f2 = Sheets("Octobre")
                Case Is = "Décembre"
                    Set f2 = Sheets("Novembre")
            End Select
            f2.Select
            DerLig = f2.Range("B" & Rows.Count).End(xlUp).Row
            For y = 7 To DerLig
                If Application.CountIf(Range(Cells(y, "W"), Cells(y, "AM")), "CP*") > 0 Then
                    f1.Cells(y, "B").Interior.Color = RGB(0, 255, 0) 'vert
                ElseIf Application.CountIf(Range(Cells(y, "AN"), Cells(y, "AT")), "CP*") > 0 Then
                    f1.Cells(y, "B").Interior.Color = RGB(255, 192, 0) 'orange
                ElseIf Application.CountIf(Range(Cells(y, "AU"), Cells(y, "BA")), "CP*") > 0 Then
                    f1.Cells(y, "B").Interior.Color = RGB(255, 0, 0) 'rouge
                End If
            Next y
        End If
SortieErreur:
        On Error GoTo 0
    Next i
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Cdlt

Bonjour Arturo83

Je ne comprends pas "créer un bouton" pour affecter cette macro !

Pas possible de me la mettre directement sur le classeur en PJ svp ?

Bonjour Sam86

ALT+F11 pour afficher VBA Project

Copiez/collez le code dans un module

Revenir dans le classeur, sur la feuille -> Menu insertion -> Forme (peu importe laquelle)

Clique droit sur la forme -> Affecter une macro et sélectionner "Marquage_Noms"

Compliqué

Bonne soirée

BrunoM45

Ca fonctionne, merci. Même
Néanmoins, n'est-il pas possible que cela se fasse automatiquement sans action sur un bouton ?
A chaque fois je me retrouve avec cette boite de dialogue qui s'ouvre. image

Re,

Ca ne vient pas du code donné par Arturo83, il n'y a pas de "Select"

Bonjour,

Néanmoins, n'est-il pas possible que cela se fasse automatiquement sans action sur un bouton ?
Oui il faut que le code un peu modifié soit dans le module du classeur "ThisWorkbook", la macro réagira à chaque changement de valeur dans le tableau, mais il fallait bien au départ une macro dans un module standard (module 2) pour passer toutes les feuilles en revue et mettre à jour la base de données avec les couleurs demandées. Cette macro par la suite ne servira plus.

Avec la macro évènementielle dans "ThisWorkbook", la mise à jour des couleurs ne se fera plus qu'au cas par cas.

Cdlt

Arturo83,

Ne m'en voulait pas si questionne, mais j'essai aussi de comprendre...

Je résume: A la base mon classeur Excel était trop lourd pour le mettre en PJ et j'ai du le tronquer de quelques feuilles. Le but étant, pour moi, de recopier la solution apportée sur la PJ par votre travail à mon classeur d'origine.

Quand je compare ton dernier post "sam86-coloration-cellules" dont c'est exactement le résultat attendu, je remarque que le module 2 de la PJ de base a été modifié. Il ni figure plus la macro suivante ci-dessous ! Est-ce normal ?

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 27/02/2011
'

'
Range("L3:M3").Select
With Selection
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("L3:M3").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
End Sub

Par contre je remarque que ta macro a remplacé celle-ci et qu'elle est aussi présente dans le "ThisWorkbook".

Si je souhaites rajouter ta macro a mon classeur Excel d'origine, que dois-je faire exactement ?

1-créer un module 3 et copier la macro du module 2 du classeur "sam86-coloration-cellules"

2-copier également la macro de ton "ThisWorkbook" dans mon "ThisWorkbook"

Parce que cela ne fonctionne pas !

Une autre remarque, sur la macro, ne figure que l'option "CP", il me faudrait aussi l'option "CPA" mentionné sur le post d'origine. Je suppose qu'un copier/coller de la macro en remplaçant les "CP" par "CPA" fonctionnerait ?

Bonjour,

Quand je compare ton dernier post "sam86-coloration-cellules" dont c'est exactement le résultat attendu, je remarque que le module 2 de la PJ de base a été modifié. Il ni figure plus la macro suivante ci-dessous ! Est-ce normal ?, J'ai écrasé involontairement votre macro en faisant un copiè-collé. La macro du module 2 a été légèrement modifiée pour pallier à d'éventuels petits problèmes. Vous pouvez la copier dans le module standard de votre choix, ça n'a pas d'importance.

La macro dans "ThisWorkbook" est différente, elle sert à à reporter la couleur dans la colonne B de la base de données lorsqu'un changement de valeur est détecté dans l'une des feuilles "Mois", alors que la macro du module2 sert à reporter les couleurs dans la colonne B de la base de données en traitant toutes les feuilles "Mois" en une seule fois.

Au départ, dans votre classeur, la colonne B de la feuille "Base de données" ne contient pas de couleurs, en lançant la macro du module 2, cela va passer en revue toutes les cellules de toutes les feuilles "Mois" et mettre les couleurs dans la base de données. Une fois que c'est fait, cette macro ne sert plus à rien, c'est la macro de "ThisWorkbook" qui prend le relais, à chaque modification de valeur dans l'une des feuilles "mois", la feuille "Base de données" sera mise à jour.

********************************************************************************************************************

Une autre remarque, sur la macro, ne figure que l'option "CP", il me faudrait aussi l'option "CPA" mentionné sur le post d'origine. Je suppose qu'un copier/coller de la macro en remplaçant les "CP" par "CPA" fonctionnerait ?

on recherche "CP*" l'astérisque indique qu"on prend tout ce qui vient après CP, donc CPA est compris dans la recherche.

********************************************************************************************************************

Déposez votre nouveau fichier(toujours allégé) avec les macros que vous avez recopié afin que je puisse voir ce qui ne va pas.

Cdlt

Bonjour,

Je post à nouveau le classeur Excel, tronqué des feuilles mensuelles février à juillet.

Dans ce classeur, pour garder mon module 2 initial, j'ai rajouté le module 3 ou j'ai copié la macro que j'ai également copié dans le "ThisWorkbook". Cela ne fonctionne pas !

OK pour l'astérisque "CP*".

Cordialement

ma foi, tout marche correctement. Quand vous dites "ça ne marche pas" vous parlez de quel cas de figure?

J'ai fait les tests suivants:

- je me positionne sur la feuille "Octobre" ligne8 le 7 août, je sélectionne "CP" ou "CPA" , je vais sur la feuille de "Novembre" et la cellule B8 est bien sur fond vert.

- j'ai recommencé le test précédents sur d'autres emplacements et ça marche à tous les coups.

-maintenant si vous voulez parler de la macro du module 3, se positionner sur un endroit quelconque du texte de la macro et faire F5 (ou Alt + F5), toutes les feuilles hormis celle du mois d'août voient la colonne B avec une couleur suivant les valeurs rencontrées dans la feuille précédente. le mois d'aoîut ne peut pas être traité vu qu'il manque le mois de juillet.

Arturo83,

Je dirais que c'est parfait. Il me manquait peut-être l'information du F5 dans le texte de la macro du module 3 pour que tout fonctionne.

Merci beaucoup.

Je vais pouvoir clôturer le post.

Rechercher des sujets similaires à "coloration"