Affichage format date

StrikeBEH

XLDnaute Occasionnel
Bonjour,
J'utilise la boucle:
Code:
Dim i As Integer
Dim j As String
For i = 1 To Day(WorksheetFunction.EoMonth(Date, 0))
If i < 10 Then
    j = "0" & i
    Else
    j = i
End If
Range("B" & i + 6) = j & UCase(Left(Format(i, "ddd"), 1))
Next i

pour afficher dans la colonne "B" les jours que comprend le mois en cours (février en l'occurence) sous la forme "01D", "02L"...

La lettre derrière le chiffre désigne le jour de la semaine.

Y aurait-il un code plus "simple" pour arriver à ce même résultat ?

Par avance merci à tous,
 

Roland_M

XLDnaute Barbatruc
Re : Affichage format date

re

ci-joint classeur avec un module à essayer avec calcul des jours fériés !


EDIT: rectificatif petit oubli !?
 

Pièces jointes

  • Classeur2.xlsm
    24.1 KB · Affichages: 39
  • Classeur2.xlsm
    24.1 KB · Affichages: 49
  • Classeur2.xlsm
    24.1 KB · Affichages: 54
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Affichage format date

Bonsour® StrikeBEH, Roland_M

:cool:
en plus compact ...:rolleyes:

[Highlight=VB]Sub Macro1()
Dim i As Integer, Ddate As Long, Ddebut As Long, Dfin As Long, PAQ As Long
Dim An As Integer, Dstat As String, Dcolor As Long
An = Year(Date)
PAQ = Evaluate("=DATE(" & An & ",3,29.56+0.979*MOD(204-11*MOD(" & An & ",19),30)- WEEKDAY(DATE(" & An & ",3,28.56+0.979*MOD(204-11*MOD(" & An & ",19),30))))")
Ddebut = DateSerial(An, Month(Date), 1)
Dfin = DateSerial(An, Month(Date) + 1, 0)
Range("B7:C37").ClearContents
i = 1
For Ddate = Ddebut To Dfin
'Range("A" & i + 6) = Ddate
Range("B" & i + 6).Font.Size = 10
Range("B" & i + 6) = Format(Ddate, "dd") & Mid("DLMMJVS", Weekday(Ddate), 1)
Select Case Ddate
Case DateSerial(An, 1, 1) _
, DateSerial(An, 5, 1) _
, DateSerial(An, 5, 8) _
, DateSerial(An, 7, 14) _
, DateSerial(An, 8, 15) _
, DateSerial(An, 11, 1) _
, DateSerial(An, 11, 11) _
, DateSerial(An, 12, 25) _
, PAQ _
, (PAQ + 1) _
, (PAQ + 39) _
, (PAQ + 49) _
, (PAQ + 50)
Range("C" & i + 6) = "JF"
Range("B" & i + 6).Interior.Color = vbRed
Range("C" & i + 6).Interior.Color = vbRed
Case Else
Select Case Weekday(Ddate)
Case Is = 1: Dstat = "CR": Dcolor = RGB(192, 192, 192)
Case Is = 7: Dstat = "CC": Dcolor = RGB(192, 192, 192)
Case Else : Dstat = "JT": Dcolor = xlNone
End Select
Range("C" & i + 6) = Dstat
Range("B" & i + 6).Interior.Color = Dcolor
Range("C" & i + 6).Interior.Color = Dcolor
End Select
i = i + 1
Next Ddate
End Sub[/code]
 

Roland_M

XLDnaute Barbatruc
Re : Affichage format date

bien le bonjour à vous,

Salut Staple !
Merci à toi Modeste ! très intéressant !


EDIT:
c'est une très ancienne routine pour les jours fériés, +sieurs années, du temps du QuickBasic 4.5 !
et comme elle fonctionnait bien je l'ai toujours gardée en l'état !
je vais regarder à la tienne et certainement faire mes modif !
encore merci.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Affichage format date

Bonjour Roland_M, Modeste Geedee, StrikeBEH

Pour le fun:
Une autre version qui tend à verser dans le compact (le calcul de Pâques et donc des JF en moins ;))
(Si besoin de Pâques, ajouter l’œuf de Modeste dans le caquelon , modifier et tester ;) )
(testé sur XL13)
Code:
Sub CompactonsCommePourraitDireEELV()
Dim Form$, IntV&
IntV = CLng(Day(DateSerial("2014", Month(Date) + 1, 0)))
Form = "DATE(YEAR(TODAY()),MONTH(TODAY()),ROW()-6)"
    With Range("B7")
        .Resize(IntV, 2).Clear
        With .Resize(IntV, 1)
            .FormulaR1C1 = "=TEXT(" & Form & ",""jj"")&MID(""DLMMJVS"",WEEKDAY(" & Form & "),1)"
            .Value = .Value
        With .Offset(, 1)
            .FormulaR1C1 = "=INDEX({""CC"";""JT"";""JT"";""JT"";""JT"";""JT"";""CR""},WEEKDAY(" & Form & "))"
            .Value = .Value
        End With
        With .Resize(IntV, 2)
            .FormatConditions.Add Type:=2, Formula1:="=GAUCHE($C7)=""C"""
            .FormatConditions(1).Interior.ThemeColor = 3
            .FormatConditions(.FormatConditions.Count).SetFirstPriority
        End With
    End With
End With
End Sub
 
Dernière édition:

StrikeBEH

XLDnaute Occasionnel
Re : Affichage format date

Bonjour et merci à tous pour vos suggestions !
J'ai testé le code de Modeste qui me convient mais celui de Staple s'exécute plus rapidement car pas de boucle, mais ... il manque les jours fériés et comme il se trouve que je travaille aussi les jours fériés !
Comment intégrer cela dans ton code Staple ?

Par avance, merci !!!
 

Staple1600

XLDnaute Barbatruc
Re : Affichage format date

Re

Bah j'ai précisé non ?
(Si besoin de Pâques, ajouter l’œuf de Modeste dans le caquelon , modifier et tester ;) )

Mais peut-être, jeune padawan, en capacité de le faire, encore n'es-tu pas ?

Bon je m'y colle ( t'as de la chance que j'ai la grippe et que je me fous des JO)
 

StrikeBEH

XLDnaute Occasionnel
Re : Affichage format date

Je t'en remercie Staple.
Ce n'est pas par manque de courage que je ne le fais pas moi-même, c'est juste que je ne sais pas comment faire...
A vrai dire, ton code correspond à ce que je souhaite mais je ne comprends pas tout, n'ayant pas les mêmes compétences que vous en VBA... ;)
 

Staple1600

XLDnaute Barbatruc
Re : Affichage format date

Bonjour Modeste geedee

Bonsour®
;) en effet : With range("B7")
Aurai-je "bouletter" ?
Qu'est-ce qu'elle ma range B7?


StrikeBEH

A vrai dire, ton code correspond à ce que je souhaite mais je ne comprends pas tout, n'ayant pas les mêmes compétences que vous en VBA...
Profites que je sois malade pour poser des questions.
J'essaierai d'éclaircir ta lanterne.
 

Discussions similaires

Réponses
5
Affichages
193

Statistiques des forums

Discussions
312 299
Messages
2 086 998
Membres
103 429
dernier inscrit
PhilippeH