coloration cellule de date à date

  • Initiateur de la discussion Initiateur de la discussion lilou
  • Date de début Date de début

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 !

lilou

XLDnaute Occasionnel
Bonsoir,

Je reviens vers vous avec de plus amples explications sur l'objectif voulu sur mon tableau.
Alors je sais je ne suis pas très forte dans les explications. j'ai retravaillé mon tableau pour essayer d'arriver à vous faire comprendre ce que je recherche.

Je voudrais colorer automatiquement des cellules correspondant à des dates de début et dates de fin sur mes tableaux.

S'il vous plaît prenez le temps d'étudier mon tableau. Il faut aussi activer les macros
 

Pièces jointes

Re : coloration cellule de date à date

J'essaie de comprendre la macro pour ajouter ensuite la même formule pour la couleur entreprise et les colories aye jusqu'a la ligne 23
mais je ne connais pas grand chose, à vrai dire rien. si tu peux continuer à m'aider où bien une autre personne

Merci
 
Re : coloration cellule de date à date

Bonjour lilou, le forum,

Eh bien veuillez bien m'excuser, c'est moi qui était bouché 😡

Cette macro est à placer dans ThisWorkbook :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
If Not IsDate("1 " & Sh.Name) Then Exit Sub 'feuille de mois uniquement
Dim deb As Range, dat As Range, plage As Range, col1, col2
Set deb = Sh.[AP3,AP7,AP11,AP15] 'dates de début
If Intersect(Source, deb.EntireRow, Sh.[AP:AQ]) Is Nothing Then Exit Sub
Set dat = Sh.[D5:AH5] 'plage des dates
Set plage = Sh.[D7:AH23] 'plage à colorer
Application.ScreenUpdating = False
plage.Interior.ColorIndex = xlNone 'RAZ
For Each deb In deb 'pour chaque date de début
  col1 = Application.Match(deb, dat, 0)
  col2 = Application.Match(deb.Offset(, 1), dat, 0)
  If IsNumeric(col1) And IsNumeric(col2) Then _
    Sh.Range(plage.Columns(col1), plage.Columns(col2)).Interior.Color _
      = deb.Offset(-1).Interior.Color
Next
End Sub
Elle fonctionnera sur toutes les feuilles de mois, à condition bien sûr que les plages soient les mêmes.

Fichier .xls joint.

Edit : je pensais le zéro inutile dans Application.Match, ce n'est pas tout à fait vrai...

A+
 

Pièces jointes

Dernière édition:
Re : coloration cellule de date à date

job75 tu es un amour, j'essaie tout de suite et encore merci de venir voir si de temps en temps j'arrive à m'améliorer dans mes explications. Un Grand Merci !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
Re : coloration cellule de date à date

D'abord ça marche d'enfer, encore mille merci !!!!!!!!
Concernant toujours les dates de début et fin, peux-t'on faire en sorte que lorsque je tapes les dates c'est à dire : exemple 02/02/2012 je puisse juste taper 02 et la cellule ou la feuille sais d'hors et déjà que cela concerne le mois de février et que c'est l'année 2012.
En sachant bien sur, que les feuilles peuvent changer de mois et d'année.
 
Re : coloration cellule de date à date

Re,

C'est une bonne idée, j'ai donc ajouté ce code :

Code:
Set dat = Sh.[D5:AH5] 'plage des dates
'---raccourci pour l'entrée des dates---
If Source.Count = 1 Then
  txt = Source.Value2 & "/" & Month(dat(1)) & "/" & Year(dat(1))
  If IsDate(txt) Then Source = CDate(txt)
End If
Fichier(2), j'ai testé seulement sur Excel 2003.

A+
 

Pièces jointes

Re : coloration cellule de date à date

Je continue, est il possible que dans las cases week-end et jour férié je ne puisse rien écrire, c'est à dire même si je tape 7 rien apparaît et que cela ne s'additione pas dans les totaux. comme je tape souvent a la ligne parfois je ne fais pas attention et ça me comptabilise tous.
pour les formules week-end et jour férié j'ai fais 3 MFC
 
Re : coloration cellule de date à date

Re,

Le plus simple est d'effacer la couleur de fond appliquée aux week-ends et jours fériés :

Code:
If IsNumeric(col1) And IsNumeric(col2) Then
  Sh.Range(plage.Columns(col1), plage.Columns(col2)) _
    .Interior.Color = deb.Offset(-1).Interior.Color
  '---sauf week-ends et jours fériés---
  For i = col1 To col2
    If Weekday(dat(i), 2) > 5 Or Application.CountIf([Férié], dat(i)) _
      Then plage(i).Interior.ColorIndex = xlNone
  Next
End If
Fichier joint.

A+
 

Pièces jointes

Re : coloration cellule de date à date

Re,

mais il n'y a pas de formule qui dis que pour les week-end ou jours férié on ne peux rien écrire (...) ?

Non jamais de la vie, il faut du VBA :

Code:
Set dat = Sh.[D5:AH5] 'plage des dates
Set plage = Sh.[D7:AH23] 'plage à étudier
'---effacement des valeurs des week-ends et jours fériés---
If Not Intersect(Source, plage) Is Nothing And Source.Count = 1 Then
  With Intersect(Source.EntireColumn, dat)
    If Weekday(.Value, 2) > 5 Or Application.CountIf([Férié], .Value) Then
      Application.EnableEvents = False
      Source = ""
      Application.EnableEvents = True
    End If
  End With
End If
Fichier (2), vous avez donc le choix entre les 2 versions...

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

Réponses
4
Affichages
425
Retour