• Initiateur de la discussion Initiateur de la discussion Chris
  • 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 !

C

Chris

Guest
Bonjour à tous,

J'ai un petit problème avec un tableau excel (des dates en ligne).
Je souhaite colorier la colonne des Fêtes, des Samedis et des Dimanches d'une manière différente ... ... mais je ne suis pas un pro d'excel et je ne sais pas trop comment m'y prendre.
Avez vous une solution à me proposer ?
Merci de votre aide et bon WE à tous.
Chris.
 

Pièces jointes

Bonjour le Forum,bonjour chris,
voici une macro qui fabrique un calendrier et qui colorie en gris (colorindex=15) les samedi,dimanches et feriés.

Sub Créa_Calendrier()
' construit un calendrier dans une ligne
' choix de la cellule de départ par l'utilisateur
' choix des dates de début et fin de calendrier
Dim deb#, fin#, NbJours&, i As Date
Dim Cell As Range, Li&, Col%
 
 On Error Resume Next
 deb = CDate(InputBox("Première date du calendrier :"))
 fin = CDate(InputBox("Dernière date du calendrier :"))
   
&nbsp;If Err <> 0 Then Exit Sub
&nbsp;
&nbsp;Set Cell = Cells(5, 2) 'Application.InputBox _
&nbsp;&nbsp;&nbsp;("Sélectionnez la cellule où commence le calendrier", Type:=8)

&nbsp;If Err <> 0 Then Exit Sub
&nbsp;
&nbsp;Li = Cell.Row: Col = Cell.Column
&nbsp;
&nbsp;For i = deb To fin
&nbsp;&nbsp;&nbsp;Cells(Li, Col).Value2 = i
&nbsp;&nbsp;&nbsp;' pour surligner les samedis, dimanches et fériés
&nbsp;&nbsp;&nbsp;If TYPEJOUR(i) = 1 Or TYPEJOUR(i) = 2 Then _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Cells(Li, Col).Interior.ColorIndex = 15
&nbsp;&nbsp;&nbsp;Cells(Li, Col).NumberFormatLocal = "jjjj jj"
&nbsp;&nbsp;&nbsp;Col = Col + 1
&nbsp;Next i
&nbsp;Couleur_Col
End Sub

'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français
Function TYPEJOUR(D As Date)
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long
&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;A = Year(D)
&nbsp;&nbsp;&nbsp;If A > 2099 Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPEJOUR = CVErr(xlErrValue)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit Function
&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;&nbsp;LD = Int(D)
&nbsp;&nbsp;&nbsp;If LD <= 2 Then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If LD = 1 Then TYPEJOUR = 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit Function
&nbsp;&nbsp;&nbsp;End If
&nbsp;&nbsp;&nbsp;T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
&nbsp;&nbsp;&nbsp;LP = DateSerial(A, 3, 2) + T + (T > 48) _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + 6 - ((A + A \ 4 + T + (T > 48) + 1) Mod 7)
&nbsp;&nbsp;&nbsp;Select Case D
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Jours fériés mobiles
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case Is = LP, Is = LP + 38, Is = LP + 49
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPEJOUR = 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Jours fériés fixes
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPEJOUR = 2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case Else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Samedi ou dimanche
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Weekday(D, vbMonday) >= 6 Then TYPEJOUR = 1
&nbsp;&nbsp;&nbsp;End Select
&nbsp;&nbsp;&nbsp;&nbsp;
End Function



&nbsp;Bon Excel.&nbsp; A +
&nbsp;&nbsp;&nbsp;&nbsp; Macpoy&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;
Fait que chaque heures de ta vie soit un souvenir pour demain!!!
 
Bonjour Macpoy,
J'ai bien reçu ta macro et te remercie de l'aide que tu assaye de m'apporter. Il m'est très difficile de l'adapter et de l'appliquer à mon tableau excel car je suis un simple amateur et ma maîtrise des macros excel est très limitée.
Comment puis-je faire pour mettre en forme ce tableau ?
Merci d'avance.
A + et bon week-end.
Chris.
 
Bonsoir Le Forum,


Voici la macro de&nbsp;Macpoy&nbsp; :

* aller dans vbe - Alt F11 -
* insérer un module _ menu Insert
* faire un copier coller de la macro
* créer une nouvelle feuille
* declencher la macro "Créa_Calendrier"
&nbsp;(outils-macros ou bien avoir déjà le menu des macros dans la barre outils)

le calendrier va se créer sur la ligne 5 - pour changer de ligne et de colonne
Set Cell = Cells(5, 2) modifier cette ligne 5, pour les lignes, 2, pour la colonne


Ceci dit, j'ai une question pour Macpoy : j'ai du mettre en commentaire cette ligne :
'Couleur_Col
sinon la macro s'arrête,

Why ? please, Thanks


Celeda
 

Pièces jointes

Bonjour le Forum,

euh j'ai une autre question pour Macpoy pour finir d'aider Chris,

comment modifier cette macro function pour avoir les "Fêtes, des Samedis et des Dimanches d'une manière différente"


Merci


Celeda (la curieuse)
 
bonjour Celeda,

sans vouloir me substituer à MacPoy, "Couleur_Col" est un appel à la procédure Couleur_Col qui ne figure pas dans le code.

Pour avoir une couleur differente suivant condition week-end-dimanche
modifie le code de Créa_Calendrier comme suit :

------------------------------------------------------------------------------
For i = deb To fin
Cells(Li, Col).Value2 = i
' pour surligner les samedis, dimanches
If TYPEJOUR(i) = 1 Then
Cells(Li, Col).Interior.ColorIndex = 15
End If
' pour surligner les jours de fête
If TYPEJOUR(i) = 2 Then
Cells(Li, Col).Interior.ColorIndex = 3
End If

Cells(Li, Col).NumberFormatLocal = "jjjj jj"
Col = Col + 1

Next i
------------------------------------------------------------------------------

en attendant MacPoy,

amicalement
 
Bonjour le Forum,


Oh oh cela marche au poil!!! mais je suis un peu sotte parfois, si j'avais bien lu la procédure
j'aurais pu faire un copier coller des premieres lignes en changeant par 2.

Merci OnErrorResumeNext et je ne pense pas que MacPoy y trouve à redire, on est là pour s'entraider et se passer le relais et aussi rectifier si on se plante car le but est de rendre
une copie le plus juste possible.

J'ai ajouté aussi aaaa pour avoir l'année.

Merci à vous deux pour cette macro.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
400
Réponses
12
Affichages
411
Réponses
5
Affichages
246
Réponses
3
Affichages
372
Retour