Calcul de trimestre
Bonjour,
Je bloque sur une partie de mon code en VBA, je vais essayer de simplifier.
Je demande à l'utilisateur une plage de trimestre. C'est à dire, s'il veut des données à partir du trimestre 1 de l'année 2012 jusqu'au trimestre 4 de l'année 2013, je recupère 4 variable : trim1, annee1, trim2, annee2 qui seront respectivement 1,2012,4,2013.
Mon but est d'avoir une liste (que je nomme listePlage ici ) qui contient les données suivantes: listPlage = (20121,20122,20123,20124,20131,20132,20133,20134) .
Mon problème est que mon code ne marche pas si trim1 est différent de 1 et trim2 différent de 4. Or je voudrais donner la possibilité à l'utilisateur le choix de partir et arriver à n'importe quel trimestre..
Merci d'avance.
Voici le code que j'ai écrit :
Sub petittest()
Dim annee1, annee2, trim1, trim2 As String
trim1 = "1"
annee1 = "2012"
trim2 = "4"
annee2 = "2013"
Dim choix1, choix2 As String
choix1 = annee1 & trim1
choix2 = annee2 & trim2
Dim nbTrim As Integer
nbTrim = ((choix2 - choix1) Mod 4) + (4 * (annee2 - annee1))
Dim listeTrim(), listeAnnee(), listePlage() As String
ReDim listeTrim(nbTrim), listeAnnee(nbTrim), listePlage(nbTrim)
For i = 0 To nbTrim Step 4
listeTrim(i) = 1
listeTrim(i + 1) = 2
listeTrim(i + 2) = 3
listeTrim(i + 3) = 4
If i = 0 Then
listeAnnee(i) = annee1
listeAnnee(i + 1) = annee1
listeAnnee(i + 2) = annee1
listeAnnee(i + 3) = annee1
Else
listeAnnee(i) = annee1 + (i / 4)
listeAnnee(i + 1) = annee1 + (i / 4)
listeAnnee(i + 2) = annee1 + (i / 4)
listeAnnee(i + 3) = annee1 + (i / 4)
End If
Next i
For i = 0 To nbTrim
listePlage(i) = listeAnnee(i) & listeTrim(i)
Next i
End Sub
Bonsoir
A tester
Option Explicit
Sub petittest()
Dim Annee1 As String, Annee2 As String, Trim1 As String, Trim2 As String
Trim1 = "1"
Annee1 = "2012"
Trim2 = "4"
Annee2 = "2013"
Dim An As Integer, Trimestre As Integer, LastTrim As Integer
Dim ListePlage As String
For An = Annee1 To Annee2
If An > Annee1 Then Trim1 = 1
If An = Annee2 Then LastTrim = Trim2 Else LastTrim = 4
For Trimestre = Trim1 To LastTrim
ListePlage = ListePlage & "," & An & Trimestre
Next Trimestre
Next An
ListePlage = Mid(ListePlage, 2)
MsgBox ListePlage
End Sub