Bonjour à tous.

Après avoir pas mal cherché, sans succès, une solution à mon problème, je viens vous l'exposer (je code sous excel 2002).

J'aimerais afficher un graphique par macro, dont les composantes sont laissées au choix de l'utilisateur. Mon projet comprend donc 3 phases:

Macro 1: Récupération et agrégation des données choisie par l'utilisateur
Macro 2: Création du graphique à partir des données agrégées
Macro 3: Affichage du graphique dans un userform

Les macro 1 et 3 fonctionnent parfaitement.

Cependant je bloque sur la macro 2.

Pour la réaliser je me suis inspirer de l'enregistreur de macro, qui donne le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Charts.Add
    ActiveChart.ChartType = xl3DPie
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Range("C2:D6"), PlotBy:= _
        xlColumns

Etant donné que ma plage de donnée est variable, j'ai voulu remplacer le code en rouge (Range...) par ma plage de donnée variable.

J'ai essayé une centaine de solution différente, et je pense avoir réussi à en trouver une satisfaisante, la voici:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub macro4()
 
Dim var1, var2 As Byte 'Ma plage de donnée est en réalité variable. J'ai simplifié ici le problème
var1 = 3
var2 = 6
 
'Sélection de la zone variable, et adaptation à mes besoins : Pas la première ligne, et seulement 2 colonnes
Cells(2, var1).Select
Selection.CurrentRegion.Offset(1, 0).Resize(Rows.Count - 1).Resize(var2 - 1, 2).Select
 
    Charts.Add
    ActiveChart.ChartType = xl3DPie
 
    ActiveChart.SetSourceData Source:=Sheets("Feuil1").Selection, PlotBy:= _
        xlColumns
 
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
 
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "titre"
    End With
 
End Sub

Je tiens à signaler qu'avec ce code, mon graphique est créé, exactement comme je le désire. (enfin presque, car avec ce code il est créé sur une nouvelle feuille, et je souhaiterais qu'il soit créé sur la feuille courante).
Cependant, à cause de l'erreur, mon application est bloquée !

Je ne comprend pas pourquoi j'obtiens cette erreur, alors que la macro fonctionne !!!

Donc si vous avez une idée à me proposer, je vous remercie d'avance!
N'hésitez pas à me demander un complément d'information, si mon explication n'est pas suffisamment claire.

Merci d'avance !