Remplissage Calendrier en fonction de couleurs

Leskwal

XLDnaute Occasionnel
Bonjour le forum

Ça me fait plaisir de revenir vers vous !!! :D

Voilà mon p'tit problème.:eek:

J'ai joint un fichier pour l'exemple.

1/ Sur le tableau principal, j'insère les heures du matin et de l'après midi pour chaque journée.

2/ les heures du matin et de l'après midi s'additionnent et le résultat va se positionner sur le tableau de synthèse.
Total heures du LUNDI sur tous les LUNDI du TABLEAU RECAP
Total heures du MARDI ...etc

3/ Cependant si le LUNDI, MARDI, MERCREDI... à un fond coloré alors AUCUN RÉSULTAT ne s'inscrit.

Est-il possible d'avoir la solution en VBA, je n'y arrive vraiment pas ?...Arghhhh :mad:


Un grand MERCI d'avance

Cordialement

Pascal
 

Pièces jointes

  • Ventil_Heures_Jrs_01.xlsm
    14.1 KB · Affichages: 43

JBARBE

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Bonjour à tous,

Je ne vois pas où est le problème ???

Sans macro ni formule quelconque, la couleur se met sans supprimer le résultat !


bonne journée
 

Pièces jointes

  • Ventil_Heures_Jrs_01.xlsx
    19.2 KB · Affichages: 49

Leskwal

XLDnaute Occasionnel
Re : Remplissage Calendrier en fonction de couleurs

Bonjour JBARBE

Non ce n'est pas ce que je désire, j'ai du mal m'exprimer.

Je souhaite la chose suivante :

Exemple :
Quand la cellule "E4" change elle s'additionne avec "F4" et donc le résultat sera inscrit dans toutes les cellules le la plage "HEURES TOTALES" + 1 CELLULE à DROITE des LUNDI, SAUF SI le LUNDI a un fond de couleur.

En code français : :eek:

Si la cellule "E4" de la feuille1 change ALORS :

1/ elle s'additionne avec la cellule "E4" de la feuille1 et

2/Lecture dans la plage nommée : "JOURS_SEMAINE" :

a/ SI le programme Trouve dans cette plage le LUNDI

ET

b/ qu'il n'y a pas de couleur de fond

Alors

c/ il colle le résultat de l'addition à droite du Lundi en question SINON il ne met rien


Même Process lorsque "F4" changera.

et même process pour chaque jour de la semaine.

J'espère avoir été plus clair. (Autre fichier lié)

Cordialement

Pascal
 

Pièces jointes

  • Ventil_Heures_Jrs_02.xlsx
    15.1 KB · Affichages: 32

job75

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Bonjour Leskwal, JBARBE,

Voir le fichier joint.

La formule du nom CodeCouleur utilise la fonction macro Excel 4.0 LIRE.CELLULE.

La fonction ALEA() rend cette formule volatile pour son recalcul.

Si l'on ajoute ou retire des couleurs => touche F9 pour le recalcul.

Noter qu'il doit s'agir de couleurs de fond et non pas de couleurs appliquées par MFC.

Noter enfin qu'on peut masquer les valeurs zéros par le format personnalisé h:mm;;

A+
 

Pièces jointes

  • Ventil_Heures_Jrs_01(1).xlsm
    16 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Bonjour Leskwal,

Code:
Function CodeCouleur(c As Range)
Application.Volatile
CodeCouleur = c.Interior.Color
End Function
Fichier joint, j'y ai mis le format h:mm;;

A+
 

Pièces jointes

  • Ventil_Heures_Jrs_VBA(1).xlsm
    22.3 KB · Affichages: 44

Leskwal

XLDnaute Occasionnel
Re : Remplissage Calendrier en fonction de couleurs

Re

Je reviens vers vous avec un exemple plus explicite. :p

La solution proposée fonctionne avec le premier exemple, mais comme ça fonctionne avec des formules qui font référence à des cellules qui d'une année sur l'autre varies => bah ça marche pas (Le 1 Septembre cette année tombe un Lundi mais l'an prochain c'est un MARDI :( . (Faut dire qu'à mon niveau, question compréhension des formules, cela avoisine le Zéro absolu. J'me débrouille mieux avec le VBA. Enfin là, pour le coup 0 aussi... ;))

En fichier exemple, une trame de réflexion (pour un écrit tout en VBA, Désolé pour cette exigence :)...)

Un très grand merci d'avance

Cordialement

Pascal
 

Pièces jointes

  • Ventil_Heures_Jrs_01_VBA_sans Formule.xlsm
    12.8 KB · Affichages: 33

job75

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Re,

Ci-joint votre fichier modifié avec :

- une liste de validation en D14 de janvier 2014 à décembre 2016

- les formules en E15 et F15

- les formules spéciales en D43:F45 pour les jours 29 30 et 31.

A+
 

Pièces jointes

  • Ventil_Heures_Jrs_VBA(2).xlsm
    20.1 KB · Affichages: 52

job75

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Re,

Une amélioration dans ce fichier (3) pour le coloriage des week-ends.

Avec une MFC sur la plage D15:F45 :

Code:
=JOURSEM($D$14+$D15-1;2)>5
On pourrait aussi construire une liste des jours fériés pour les colorier.

Nombreux exemples sur le forum.

Edit : j'ai simplifié les formules en E15 et en F15 avec SOMME.SI.

A+
 

Pièces jointes

  • Ventil_Heures_Jrs_VBA(3).xlsm
    20.3 KB · Affichages: 41
Dernière édition:

job75

XLDnaute Barbatruc
Re : Remplissage Calendrier en fonction de couleurs

Bonjour Leskwal, le forum,

Ci-joint une solution sans formules avec cette macro dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, c As Range, i As Byte, dat&, coul&, s#
Set P = [D4:F10]
Set c = [D14]
If Intersect(Target, Union(P, c.Resize(32, 3))) Is Nothing Then Exit Sub
Application.EnableEvents = False 'désactive les événements
If Not IsDate(c) Then c = Date 'sécurité
c = DateSerial(Year(c), Month(c), 1) '1er du mois
For i = 2 To 32
  dat = c + i - 2
  If Month(dat) = Month(c) Then
    c(i) = i - 1
    c(i, 2) = UCase(Format(dat, "dddd"))
    coul = c(i, 2).Interior.Color
    s = Application.SumIf(P.Columns(1), c(i, 2), P.Columns(2))
    s = s + Application.SumIf(P.Columns(1), c(i, 2), P.Columns(3))
    c(i, 3) = IIf(coul = 16777215 And s > 0, s, "")
  Else
    c(i).Resize(, 3) = "" 'jours 29 30 ou 31
  End If
Next
Application.EnableEvents = True 'réactive les événements
End Sub
Elle s'exécute quand on modifie les données des tableaux.

Noter que si l'on modifie une couleur en colonne E il faut revalider une donnée des tableaux.

A+
 

Pièces jointes

  • Ventil_Heures_Jrs_VBA sans formule(1).xlsm
    23.9 KB · Affichages: 50

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 879
Membres
103 981
dernier inscrit
vinsalcatraz