Sub Test()
Dim Mois As Integer, Année As Long, Plage As Range, I As Integer
Select Case Sheets("menu").Range("D5")
Case "janvier"
Mois = 1
Case "février"
Mois = 2
Case "mars"
Mois = 3
Case "avril"
Mois = 4
Case "mai"
Mois = 5
Case "juin"
Mois = 6
Case "juillet"
Mois = 7
Case "août"
Mois = 8
Case "septembre"
Mois = 9
Case "octobre"
Mois = 10
Case "novembre"
Mois = 11
Case "décembre"
Mois = 12
Case Else
Exit Sub
End Select
Année = Sheets("menu").Range("F5")
If Année = 0 Then Exit Sub
With Sheets("Données")
I = 2
While .Cells(I, 1) <> ""
If Month(.Cells(I, 1)) = Mois And Year(.Cells(I, 1)) = Année Then
If Plage Is Nothing Then
Set Plage = Union(.Cells(I, 2), .Cells(I, 5))
Else
Set Plage = Union(Plage, .Cells(I, 2), .Cells(I, 5)) 'chois des colone
End If
End If
I = I + 1
Wend
End With
If Plage Is Nothing Then
MsgBox "Il n'y a pas de valeurs à cette date !", vbExclamation, "Erreur"
Exit Sub
End If
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Plage
ActiveChart.ChartType = xlColumnClustered
ActiveChart.Location Where:=xlLocationAsObject, Name:="graph."
End Sub