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 With

Formule 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

18date-format.xlsx (10.03 Ko)

Bonjour FINDRH & Amadéus,

Merci pour vos réponses.

J'ai testé les deux et actuellement j'utilise la solution 1.

Encore merci.

Rechercher des sujets similaires à "affichage format date vba"