Colorier des cellules suivant une condition

Bonjour

Dans le fichier ci-joint j'ai des nombres dans les colonnes sorties. Ce que je voudrais obtenir c'est de colorier les cellules qui remplissent la condition suivante : colorier les cellules (colonne "Sorties") du mois qui précèdent 5 mois celui en cours.

Exemple : nous sommes au mois d'avril, donc il faudrait colorier tous les nombres qui sont se trouvent dans les cellules des colonnes "Sorties" 5 mois avant le mois en cours, donc dans le fichier joint colorier les cellules des mois de décembre 2015, novembre 2015, etc... Ou mieux si possible, afficher dans un Msgbox via un bouton les nombres concernés.

J'espère m'être bien fait comprendre. Merci.

26calendrier.xlsm (21.49 Ko)

Bonjour

Deux choses que je vois sur ce fichier et qu'il faudrait modifier

  • Supprimer la colonne AL
  • mettre les mois au format date et non pas en dur comme cela est maintenant. Donc faire ceci 1/1/2016, 1/2/2016. Ensuite on met cela au format date pour voir le nom des mois

Possible cela ?

Crdlt

D'abord merci de m'avoir répondu :

A la 1ère question je voudrais éviter de supprimer cette colonne, mais si il n'y a pas d'autre solution pour répondre à mon problème, alors, la colonne devra être supprimée.

A la 2ème question : fait, voir fichier joint.

27calendrier.xlsm (21.89 Ko)

Re

Pour faire plus simple, il est préférable de supprimer la colonne en question...

Comment doit se faire le coloriage ? A l'ouverture du fichier, via un bouton, ... en gros sur base de quelle action

Crdlt

Bonjour

Merci de m'avoir répondu

On peut effectivement supprimer la colonne AL. L'idéal ce serait de faire apparait dans une Msgbox (via un bouton) la liste des sorties qui répondent au critère cité plus haut. Merci.

re

PapouMAC a écrit :

On peut effectivement supprimer la colonne AL. L'idéal ce serait de faire apparait dans une Msgbox (via un bouton) la liste des sorties qui répondent au critère cité plus haut. Merci.

Possible mais ce sera nettement plus complexe que de colorier.

Le bouton oui mais pas une msgbox mais plutot une userform qu'il faudra créer avec toute la programmation derrière

Crdlt

Merci pour cette piste, je vais la creuser.

Re

Fais simple pour commencer.

Voici déjà un code à essayer. Associe le à un bouton sur ta feuille pour exécuter le code

Sub test()
Dim a As Date
Dim lig As Integer, dlg As Integer
a = CDate("1/" & Month(Now) & "/" & Year(Now))
col = Rows(4).Find(a).Column
For i = col - 3 To col - 15 Step -3
    dlg = Cells(Rows.Count, i - 1).End(xlUp).Row
    Range(Cells(6, i - 1), Cells(dlg, i - 1)).Font.ColorIndex = 3
Next
End Sub

Cordialement

Bonjour

Je te remercie de la peine que tu prends. Je viens d'essayer ton code, mais cela ne donne rien, je ne vois aucune cellule changer de couleur.

Voir fichier joint.

26calendrier.xlsm (34.01 Ko)

Re

Si tes couleurs sont déjà en rouge, cela ne change rien. Mets tes chiffres en couleur noir puis clique sur le bouton

Par contre en relisant, le code colorie les 5 mois précédents... c'est bon cela ou il ne faut que la couleur sur le 5ieme mois précédent ?

Crdlt

Pourquoi ne pas utiliser la mise en forme conditionnelle pour colorier des cellules ?

Une mise en forme sur la cellule B6 :

=ET(ESTNUM(B6);ESTNUM(C$4);MOIS.DECALER(AUJOURDHUI();-4)>C$4)

et cette mise en forme peut être étendue à tout le tableau.

Le premier test vérifie que la cellule est saisie, la seconde que la date est saisie (donc que l'on est dans la bonne colonne), et le troisième vérifie la date.

Merci de me répondre.

Je viens de modifier le code de la couleur, seule la couleur de l'intitulé de la colonne "Nom" change, et ce n'est ce que j'aimerais obtenir.

L'idéal se serait d'afficher avec une couleur toutes les valeurs se trouvant dans la colonne "Sorties" des mois antérieurs à 5 le 5eme mois compris.

Exemple pour ce mois-ci (avril) : afficher en couleurs toutes les valeurs (cellule "Sorties") des mois de décembre 2015, novembre 2015, etc...

soit dans l'exemple : 18, 13 ,14, 16, 18, 1 ,23, etc...

re

Je viens de modifier le code de la couleur, seule la couleur de l'intitulé de la colonne "Nom" change, et ce n'est ce que j'aimerais obtenir.

Avant de poster le code, j'ai vérifié. A nouveau j'ouvre le dernier fichier que tu as posté et cela fonctionne. donc....

L'idéal se serait d'afficher avec une couleur toutes les valeurs se trouvant dans la colonne "Sorties" des mois antérieurs à 5 le 5eme mois compris

.

Tous les mois depuis la colonne B du fichier ??

Crdlt

En fait il faut la couleur pour tous les mois antérieurs au 4eme mois. Comme expliquer plus haut il faudrait colorier (par rapport au mois en cours) le 5eme, 6eme, etc... Dans le code fourni les mois postérieurs au 4eme mois sont colorier et cela ne doit pas être. Merci.

Edit

Ça fonctionne, il m'a suffit de modifier le début de la boucle en démarrage avec col - 12 to - 18 step -3, par contre il me colorie les cellules même si celles-ci sont vide.

Je retient l'idée de Peuwi que je testerai, car j'aimerai garder la colonne AL comme séparateur entre les deux années.

re

Modifie le code comme suit

Sub test()
Dim a As Date
Dim col As Integer, dlg As Integer, i As Integer
a = CDate("1/" & Month(Now) & "/" & Year(Now))
col = Rows(4).Find(a).Column

For i = col - 12 To 2 Step -3
    dlg = Cells(Rows.Count, i - 1).End(xlUp).Row
    Range(Cells(6, i - 1), Cells(dlg, i - 1)).Font.ColorIndex = 3
Next
End Sub

Cordialement

Edit : attention de ne pas mettre les mois en cellule fusionnées (comme c'était le cas pour décembre 2015 dans ton fichier)

Toujours pareil si les colonnes sont vides la 1ere cellule de la colonne est coloriée, comment éviter cela ?

Je viens d'essayer la méthode de Peuwi qui fonctionne sauf pour le mois de décembre qui n'est pas pris en compte.

Encore merci à tous les deux pour la peine que vous prenez. Merci.

Edit : la méthode de Peuwi fonctionne, effectivement j'avais fusionner la cellule contenant le mois de décembre, en la supprimant, les cellules changent bien de couleurs.

Re

Ok je viens de comprendre. Tu me parlais de "nom" avant et là ...je ne voyais. En réalité c'est le nom "sortie" qui avait un souci

Voici le code corrigé

Sub test()
Dim a As Date, col As Integer
Dim lig As Integer, dlg As Integer, i As Integer
a = CDate("1/" & Month(Now) & "/" & Year(Now))
col = Rows(4).Find(a).Column
For i = col - 12 To 2 Step -3
    dlg = Cells(Rows.Count, i - 1).End(xlUp).Row
    If dlg > 5 Then Range(Cells(6, i - 1), Cells(dlg, i - 1)).Font.ColorIndex = 3
Next
End Sub

Cordialement

Impeccable tout fonctionne correctement. Encore merci à vous deux pour votre disponibilité et vos compétences.

Cordialement.

Rechercher des sujets similaires à "colorier suivant condition"