Affichage format date VBA
Bonjour à tous,
j'essaie d'afficher dans une cellule "B10" ma date qui se trouve dans Sheets("TestDtae").Range("D10") sous trois format selon les conditions suivantes :
- - si l'année est plus ancienne que l'année en cours j'affiche seulement l'année format "yyyy"
- si année = année en cours et mois inférieure au mois en cours j'affiche ma date format "mmm-yy"
- si année = année en cours et mois = mois en cours, j'affiche le numéro de la semaine
PS: J'ai une fonction Semaine ecrite en vba qui me calcule très bien le numéro de la semaine.
Comme je n'arrive pas à le faire avec la fonction Si de excel, j'essaie de l'écrire en vba . Voici la partie de mon code correspondant:
P_mois = ActiveWorkbook.Worksheets("TestDtae").Range("G2").Value 'la date du jour format dd/mm/yyyy dans feuil"param" cellule G2
With Sheets("Test")
If Trim(Sheets("TestDtae").Range("D10")) <> "" Then
If Format(Sheets("TestDtae").Range("D10").Value, "yyyy") < Format(P_mois, "yyyy") Then
.Range("B10").Value = Format(Sheets("TestDtae").Range("D10").Value, "yyyy")
ElseIf Format(Sheets("TestDtae").Range("D10").Value, "yyyy") = Format(P_mois, "yyyy") And Format(Sheets("TestDtae").Range("D10").Value, "mm") = Format(P_mois, "mm") Then
.Range("B10").Value = semaine(Sheets("TestDtae").Range("D10").Value)
ElseIf Format(.Range("D10").Value, "yyyy") = Format(P_mois, "yyyy") And Format(Sheets("TestDtae").Range("D10").Value, "mm") < Format(P_mois, "mm") Then
.Range("B10").Value = Format(.Range("D10").Value, "mmm-yy")
ElseIf Format(Sheets("TestDtae").Range("D10").Value, "yyyy") = Format(P_mois, "yyyy") And Format(Sheets("TestDtae").Range("D10").Value, "mm") > Format(P_mois, "mm") Then
.Range("B10").Value = semaine(Sheets("TestDtae").Range("D10").Value)
End If
End If
End WithFormule SI aussi serait la bienvenu !!!
Merci d'avance.
Bonjour
Rien n'est prévu si la date est supérieure?
Avec tes données:
=SI(ANNEE(D10)<ANNEE(AUJOURDHUI());TEXTE(D10;"aaaa");SI(ET(ANNEE(D10)=ANNEE(AUJOURDHUI());MOIS(D10)<MOIS(AUJOURDHUI()));TEXTE(D10;"mmm")&CAR(45)&TEXTE(D10;"aa");ENT(MOD(ENT((D10-2)/7)+0,6;52+5/28))+1))Cordialement
Bonjour
il faut effectivement utiliser la fonction si, qui ne peut tester la cellule dans laquelle elle est utilisée...
Je te propose d'inscrire une date dans une cellule, et de créer une cellule résultat qui vient tester cette dernière eu égard à maintenant()
J'utilise ensuite la MFC qui teste les différentes valeurs reçues pour formater selon ta demande
A essayer
Cordialement
FINDRH
Bonjour FINDRH & Amadéus,
Merci pour vos réponses.
J'ai testé les deux et actuellement j'utilise la solution 1.
Encore merci.