Macro couleur

Bonjour,

Ne connaissant pas bien le langage des macros dans Excel, j'aurais besoin de votre aide.

Mon problème est simple, j'ai une colonne durée en mois, et quatre colonnes consécutives de mois allant de mai à août.

J'aimerais colorier les cases des mois en fonction de la durée, par exemple si j'ai une durée de 3 mois, sur la ligne correspondante, colorier les mois de mai, juin, juillet; si la durée est de deux mois, colorier les mois de mai et de juin.

Merci d'avance pour votre aide.

Bonjour et bienvenue gogodu60,

Peux-tu joindre un fichier en gardant quelques lignes et en mettant le résultat souhaité manuellement ?

Si donnée confidentielles, mets-y des données bidon.

Voila un extrait de mon fichier, cela t'aidera à mieux comprendre !

Merci de ta réponse rapide.

15fichier-exemple.xls (13.50 Ko)

Bonjour

Après sélection de tout le tableau

La condition de la MFC

projet1

Le fichier

15fichier-exemple.xls (13.50 Ko)

Re,

Pas besoin de passer par du vba. Une mise en forme conditionnelle suffit.

Sélectionne tes données sauf la ligne des mois et la colonne des durées puis dans l'onglet "Accueil" clique sur "Mise en forme conditionnelle" -> "Nouvelle règle" -> clic sur "Utiliser un formule pour déterminer pour quelles cellules le format sera appliqué". Ensuite, mets la formule suivante :

=COLONNE()-COLONNES(INDIRECT("A1:"&ADRESSE(1;COLONNE()-COLONNES($A:A))))<=INDIRECT(ADRESSE(LIGNE();COLONNE()-COLONNES($A:A)))

Choisis en suite le format que tu veux et c'est OK normalement.

fichier :

Edit : oups! salut amadéus! Ma formule est à peine plus compliquée mais je voulais faire en sorte qu'elle marche quelque soit l'emplacement du tableau

Merci beaucoup Amadeus ! et aussi vba-new !

Ca marche parfaitement !

Sinon juste une autre question : si je veux augmenter le nombre de mois, comment faire évoluer la formule ?

car pour le moment si je mets une durée de 10 mois, il n'y a que 4 mois qui sont coloriés.

Merci !

Bonjour à tous,

je mets quand même une version VBA (à placer dans code feuille)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lg%, i%, x As Byte
Lg = Range("b65536").End(xlUp).Row
    If Not Application.Intersect(Target, Range("b3:b" & Lg)) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
            Range("c3:z" & Lg).Interior.ColorIndex = xlNone
        For i = 3 To Lg
            x = Cells(i, 2) - 1
            Range(Cells(i, 3), Cells(i, 3 + x)).Interior.ColorIndex = 40
        Next i
    End If
End Sub

Bonne journée

Claude

Merci Dubois pour ton exemple.

Pour ma précédente question j'ai trouvé la solution, c'était tout bête, il suffit d'étendre la zone concernée par la mise en forme conditionnelle !

Encore un grand merci à tous.

-- 07 Juil 2010, 09:51 --

tout est bien sauf que quand je veux le refaire sur un autre fichier cela ne marche pas.

J'applique pourtant la même formule : =COLONNE()<Q34+3 est ce comme cela qu'on peut faire évoluer la formule ?Merci

-- 07 Juil 2010, 10:05 --

Tous mes problèmes sont solutionnés ! c'est bon , c'est vrai que de temps en temps je vais un peu vite ...

Une toute dernière question susceptible de faire évoluer mon document : comment démarrer la couleur non pas automatiquement au premier mois comme c'est le cas mais à un mois choisi ?

Merci

re,

là, je pense que le VBA s'impose,

il faudrait ajouter une colonne "Départ"

envoie une feuille un peu + avancée

Amicalement

Claude

Bonjour

Salut Claude

Sans VBA et classique

Cordialement

13fichier-exemple.zip (44.46 Ko)

Merci Amadeus !

J'ai légèrement modifié mon fichier et je pense que cela va vous aider.

J'ai en effet besoin d'une colonne date de début et d'une colonne date de fin.

Ainsi je souhaiterais obtenir le résultat suivant :

si la durée est de trois mois et la date de début un jour dans le mois de juilet 2010, il faudrai que juillet, août, septembre se colorient sur la ligne correspondante.

Merci

Bonjour

J'ai une solution, mais auparavant, il nous faut être d'accord.

Le délicat problème est de distinguer l'écart en mois entre les 2 dates et le fait que tu écrives

"si la durée est de trois mois et la date de début un jour dans le mois de juilet 2010, il faudrai que juillet, août, septembre se colorient sur la ligne correspondante."

Ex

du 30/06 au 11/01/11 Juin Juillet Août Sept Oct Nov Dec Janvier = 8 mois en causes

et tu indiques 7 mois.

Si comme tu le précises Juin doit être compté, que devient Janvier?

A te lire

Cordialement

Merci Amadeus de m'avoir fait remarquer ce "décalage" entre la durée effective et la durée de début et de fin.

J'ai réfléchi en fait je souhaite intégrer aussi bien le mois de juin que le mois de janvier, cela doit donc prendre en compte la date de début et la date de fin.

Merci pour la qualité et la précision de tes réponses !

Re, bonjour

1) Colonne D; Nombre de mois à prendre en compte

Formule en D3 à incrémenter vers le bas

=SI(ANNEE(C3)>ANNEE(B3);13-MOIS(B3)+MOIS(C3);MOIS(C3)-MOIS(B3)+1)

2) Mise en place de la Mise en forme conditionnelle.

Le tableau $E$3:$S$5 étant sélectionné

Commande "Insertion" "Nom" "Définir"

La Formule

=OU(ET(MOIS(E$2)=MOIS($B3);ANNEE(E$2)=ANNEE($B3));ET(Feuil1!E$2>Feuil1!$B3;Feuil1!E$2<MOIS.DECALER(Feuil1!$B3;Feuil1!$D3-1)))

est nommée MFC

Mise en forme conditionnelle du tableau

Condition1

=MFC

Cordialement

Re Amadeus ,

Merci pour ta solution, cependant cela ne marche pas. Pourtant il me semble bien suivre ta procédure :

  • "insertion", "nom"," définir", "MFC", "ajouter"
  • sélection de la plage de données, "format"," mise en forme conditionnelle"," la formule est"," = MFC ".

Juste une petite précision, je voudrais que la durée reste la même qu'auparavant mais que le nombre de mois coloriés soit plus important. Par exemple pour le cas date de début : 29/11/10, date de fin : 18/03/11, durée : 4 mois mais cinq mois coloriés : novembre, décembre, janvier, février, mars

J'espère ne pas trop abuser de ta patience !

Bonjour

Pour la première remarque

Merci pour ta solution, cependant cela ne marche pas. Pourtant il me semble bien suivre ta procédure :

  • "insertion", "nom"," définir", "MFC", "ajouter"
  • sélection de la plage de données, "format"," mise en forme conditionnelle"," la formule est"," = MFC ".
Non, tu ne suis pas l'ordre (et pourtant, je l'ai mis en rouge exprès)

Pour la seconde remarque

Dans la formule en D3, pour avoir un mois de moins, il te suffit d'enlever le +1 à la fin de la formule ainsi que remplacer le 13 par 12.

Enfin, tout, y compris les explications sont dans ce nouveau fichier

Cordialement

Un grand grand merci Amadeus, c'est exactement ce que je voulais !!

Après une longue discussion, c'est bon !

En tout cas bravo pour la précision de tes réponses (bien qu'il me soit arrivé de passer à côté )

En tout cas super efficace, ça fait plaisir !

A la prochaine !

Rechercher des sujets similaires à "macro couleur"