Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Affichage format date

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 !

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,
 
Re : Affichage format date

bien le bonjour à tous,

copier ceci dans un module pour faire essai simplement avec F5
(pour le coup il n'est pas plus simple mais explications ...)

Code:
'exemple sur excel avec la date en C1 "01/02/2014"
'en C2 =JOUR($C$1+0)&CHOISIR(JOURSEM($C$1+0;2);"L";"M";"M";"J";"V";"S";"D")
'en C3 =JOUR($C$1+1)&CHOISIR(JOURSEM($C$1+1;2);"L";"M";"M";"J";"V";"S";"D")
'en C4 =JOUR($C$1+2)&CHOISIR(JOURSEM($C$1+2;2);"L";"M";"M";"J";"V";"S";"D")
'...
'
'
'ton code n'est pas tout à fais correcte,
'car le 1'février 2014 c'est Samedi et non pas Dimanche !
'pour les jours de sem c'est selon les réglages des paramètres dans windows !?
'   premier jour Lundi ou Dimanche ?
'si Dimanche ici > UCase(Left(Format(I - 0, "ddd"), 1))
'si Lundi    ici > UCase(Left(Format(I - 1, "ddd"), 1))

'ensuite pour les dates inf. au 01/03/1900 il faut ajouter+1 à la date!
' pour s'en convaincre il suffit de TAPER F5 ici
'(la raison pour laquelle j'utilise ma function FNbrDeJrMois())
Sub VerificationDate()
Dim Dat As Date
Dat = "01/01/1900" ' ici il donne 30 alors que c'est 31 !
MsgBox Day(WorksheetFunction.EoMonth(Dat, 0)) 
Dat = "01/02/1900" ' ici il donne 27 alors que c'est 28 !
MsgBox Day(WorksheetFunction.EoMonth(Dat, 0)) 
End Sub



Sub TonCodeModifie()
Dim I%, J$
For I = 1 To FNbrDeJrMois(Year(Date), Month(Date))
 If I < 10 Then J = "0" & I Else J = I
 MsgBox J & UCase(Left(Format(I - 1, "ddd"), 1))
 'Range("B" & I + 6) = J & UCase(Left(Format(I - 1, "ddd"), 1))
Next
End Sub

Private Function FNbrDeJrMois(AnneeX, MoisX) As Integer
FNbrDeJrMois = Choose(MoisX, 31, 28 + (1 And IsDate("29/02/" & AnneeX)), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
'ou If AnneeX Mod 4 = 0 And (AnneeX Mod 100 <> 0 Or AnneeX Mod 400 = 0) Then Fev = 29 Else Fev = 28
End Function
 
Dernière édition:
Re : Affichage format date

Bonjour Roland_M, 😀
Mon précédent message s'adressait à kingfadhel et non pas à toi Roland_M !
Puisqu'il trouvait que mon code n'était pas assez clair alors que visiblement il l'a été pour toi !

D'ailleurs en m'inspirant de ton code j'ai modifié le mien en conséquence, ce qui donne:
Code:
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).Font.Size = 10
Range("B" & i + 6) = j & UCase(Left(Format(i - 1, "ddd"), 1))
If UCase(Left(Format(i - 1, "ddd"), 1)) = "S" Then
    Range("C" & i + 6) = "CC"
    Else
    If UCase(Left(Format(i - 1, "ddd"), 1)) = "D" Then
        Range("C" & i + 6) = "CR"
        Else
        Range("C" & i + 6) = "JT"
    End If
End If
Next i

Ca a l'air de mieux fonctionner ainsi et je t'en remercie !!!
Pour info, j'ai testé en changeant la date système, en choississant par exemple février 2016 (année bissextile) et cela m'affiche bien 29 jours dans mon tableau...
Encore merci à toi !
 
Re : Affichage format date

Bonsour®
D'ailleurs en m'inspirant de ton code j'ai modifié le mien en conséquence

en restructurant cela donne ceci :
VB:
Dim i As Integer
    For i = 1 To Day(WorksheetFunction.EoMonth(Date, 0))
        Range("B" & i + 6).Font.Size = 10
        Range("B" & i + 6) = Format(i, "00") & UCase(Left(Format(i, "ddd"), 1))
        Select Case Right(Range("B" & i + 6), 1)
            Case Is = "S"
                Range("C" & i + 6) = "CC"
            Case Is = "D"
                Range("C" & i + 6) = "CR"
            Case Else
                Range("C" & i + 6) = "JT"
        End Select
    Next i

🙄
cependant comme tu n'utilises pas réellement les dates
cela posera un problème lorsque qu'il te faudra gérer les jours fériés légaux
ex :
lundi de Pâques = Non JT
1er Mai =Non JT
 
Dernière édition:
Re : Affichage format date

Bonjour à tous


Ma grippe me laisse juse assez de force pour faire de la formule plutôt que du VBA 😉
Code:
=TEXTE(A1;"jj")&STXT("LMMJVSD";JOURSEM(A1;2);1)
Mais cette formule ci-dessous est facilement transposable en VBA avec Mid.
Je te laisse tenter la chose, StrikeBEH 😉
 
Re : Affichage format date

Bonsour®
on ne le répétera jamais assez, l'absence d'un fichier exemple, permet de multiples hypothèses...

comme dit dans mon intervention précédente, il n'a pas encore été ici évoqué cette notion de dates réelles, ni de dates en colonne A.

tout comme toi ma première idée avait été "formuliste"... 🙄
 
- 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
15
Affichages
791
Réponses
5
Affichages
915
Réponses
10
Affichages
667
Réponses
2
Affichages
411
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
233
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
362
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…