Remplissage Calendrier en fonction de couleurs

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Leskwal

XLDnaute Occasionnel
Bonjour le forum

Ça me fait plaisir de revenir vers vous !!! 😀

Voilà mon p'tit problème.😱

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 😡


Un grand MERCI d'avance

Cordialement

Pascal
 

Pièces jointes

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 : 😱

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

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

Re : Remplissage Calendrier en fonction de couleurs

Re

Je reviens vers vous avec un exemple plus explicite. 😛

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

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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

D
Réponses
4
Affichages
1 K
Argos88620
A
S
Réponses
3
Affichages
2 K
Sylvestre85
S
M
Réponses
7
Affichages
2 K
MacGruber
M
5
Réponses
17
Affichages
4 K
5seven
5
L
Réponses
19
Affichages
6 K
lucifer71
L
C
Réponses
4
Affichages
8 K
C
P
Réponses
4
Affichages
1 K
Retour