VBA Excel: fonction pour sortir le quart du trimestre de la date de saisie
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
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