1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
Sub Test()
Dim Fe As Worksheet
Dim Plage As Range
Dim Cel As Range
Dim DateDebut As Date
Dim DateFin As Date
Dim NBMois As Long
Dim Lgn As Long
'défini la plage en feuille "Feuil1" sur la colonne A à partir de A2
With Worksheets("Feuil1"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'feuille qui va recevoir le tableau
Set Fe = Worksheets("Feuil2")
'entêtes
Fe.Range("A1:B1").Value = Array("Références", "Dates")
'ligne de début
Lgn = 2
For Each Cel In Plage
'calcul du nombre de mois
DateDebut = Cel.Offset(, 1).Value
DateFin = Cel.Offset(, 2).Value
NBMois = DateDiff("m", DateDebut, DateFin, vbMonday)
With Fe
'inscrit la référence en cours
.Range(.Cells(Lgn, 1), .Cells(NBMois + Lgn - 1, 1)).Value = Cel.Value
'inscrit les deux première dates de la série
.Cells(Lgn, 2).Value = DateDebut
.Cells(Lgn + 1, 2).Value = DateSerial(Year(DateDebut), Month(DateDebut) + 1, Day(DateDebut))
'tire vers le bas
.Range(.Cells(Lgn, 2), .Cells(Lgn + 1, 2)).AutoFill .Range(.Cells(Lgn, 2), .Cells(NBMois + Lgn - 1, 2))
'pour la référence suivante
Lgn = Lgn + NBMois
End With
Next Cel
End Sub |
Partager