Question

Je travaille dans VBA pour Excel et j'ai besoin d'utiliser une fonction que je peux saisir une date dans le format de la date convertie Excel (telle que 40736).Et produire la date du trimestre immédiatement après la date de saisie du format YYYMMDD, où les quartiers sont le 1er janvier, avril 1, JUL 1 et 1 octobre. Tous les calculs doivent être effectués dans VBA et non dans la feuille de calcul. À titre d'exemple: mon entrée peut être 40736 (la date Excel correspondant au 7/12/2011. J'aimerais que ma sortie soit 20111001, qui correspond au trimestre suivant.

Je ne suis vraiment pas sûr de savoir comment aborder cela afin de pouvoir aider les stratégies ou les peices de code proposées.Merci

Était-ce utile?

La solution

Voici une légère variation du code de Martin pour donner le premier jour du prochain jour suivant Quarter:

Function GetQuarterDate2(InDate As Date) As Date

    Dim Quarter As Integer
    Dim OutDate As Date
    Dim yr As Long

    Quarter = DatePart("q", InDate)
    yr = Year(InDate)

    If Quarter = 1 Then
        OutDate = DateSerial(yr, 4, 1)
    ElseIf Quarter = 2 Then
        OutDate = DateSerial(yr, 7, 1)
    ElseIf Quarter = 3 Then
        OutDate = DateSerial(yr, 10, 1)
    ElseIf Quarter = 4 Then
        OutDate = DateSerial(yr + 1, 1, 1)
    End If

    GetQuarterDate2 = OutDate

End Function

Autres conseils

Le ci-dessous devrait fonctionner, fournir votre date comme argument indéterminé;

Function GetQuarterDate(InDate As Date) As Date

  Dim Quarter As Integer
  Dim OutDate As Date

  Quarter = DatePart("q",InDate)

  If Quarter = 1 Then
    OutDate = DateSerial(DatePart("yyyy",InDate),1,1)
  ElseIf Quarter = 2 Then
    OutDate = DateSerial(DatePart("yyyy",InDate),4,1)
  ElseIf Quarter = 3 Then
    OutDate = DateSerial(DatePart("yyyy",InDate),7,1)
  ElseIf Quarter = 4 Then
    OutDate = DateSerial(DatePart("yyyy",InDate),10,1)
  End If

  GetQuarterDate = OutDate

End Function

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top