Bonjour à tous,

Comme la plus part des personnes qui poste un message sur ce forum, j'au un problème avec ma petite programmation en VBA.
Si une personne plus douée que moi (et la je n'en doute pas) peu me sortir de ma problématique je lui en serais très reconnaissant.

J'ai un classeur Excel dans lequel il y a deux feuilles :
- Feuil1 "suivi"
- Feuil2 "graph"

Dans la Feuil1 donc "suivi", il y a tableau de 62 colonnes et d'un nombre de ligne qui s'accroit au fur et a mesure du temps. Pour résumer un nombre de colonne constant un le nombre de ligne variable.

J'essai de créer un graphique dans le Feuil2 "graph", avec pour abscisse les valeurs d'une colonne x (35 par exemple) et pour ordonnée la colonne y (4 car elle correspond à la date de la rentrée des informations de la ligne correspondante).

Pour compliquer les choses le graphique ne commence pas forcement par la première ligne du tableau et ne termine pas forcement par la dernière ligne. C'est l'utilisateur du fichier Excel qui décidera par un choix de date de début et de date de fin qui est fait sur une autre Feuil.

Pour créer ce graphique j'ai réalisé ce petit programme:


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
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Sub BoutonCreer1_Click()

Dim date1 As Date
Dim date2 As Date
Dim celluletrouve, celluletrouvee As Range
Dim m, j As Long
Dim Derna As Long
Dim i As Long
Dim Tableau() As Variant, Tableau2() As Variant

'choix des dates debut et fin par  l'utilisateur sur Feuil12

date1 = Feuil12.Cells(5, 2) 
date2 = Feuil12.Cells(5, 4)

'recherche des numeros de ligne correspondant aux date demandées

Set celluletrouve = Sheets("suivi").Range("D:D").Find(date1, lookat:=xlWhole)
Set celluletrouvee = Sheets("suivi").Range("D:D").Find(date2, lookat:=xlWhole)
If celluletrouvee Is Nothing Then
MsgBox ("pas de production ce jour : " & date2)
End If
If celluletrouve Is Nothing Then
MsgBox ("pas de production ce jour : " & date1)
Else
ligne = celluletrouve.Row
ligne2 = celluletrouvee.Row
End If

'boucle pour ajouter ligne ayant la même date en fin de serie
Sheets("Suivi").Activate
Derna = Sheets("Suivi").Range("D65536").End(xlUp).Row
Dim Résultat As Long
For m = ligne To Derna
If Sheets("Suivi").Range("D" & m) = date1 Then
ligne = m + 1
End If
Next m
ligne = ligne - 1

'MsgBox ligne
'MsgBox ligne2


'calcul du nombre de ligne pour declaration tableau
ligne3 = (ligne - ligne2) + 1
'MsgBox ligne3


Sheets("Suivi").Activate

ReDim Tableau(ligne3)
ReDim Tableau2(ligne3)
 
    'Création du tableau pour les Abscisses
   
    For i = ligne2 To ligne

'ligne qui  declenché le message d'erreur 
        Tableau(i) = Feuil7.Cells(i, 35)
    Next i
 
    'Création d'un tableau pour les Ordonnées
    
    For i = ligne2 To ligne
        'Le tableau est rempli par des valeurs aléatoires pour
        'cet exemple
        Tableau2(i) = Feuil7.Cells(i, 4)
    Next i
 
    'Création graphique
    Charts.Add
    'Définit la localisation du graphique:
    'dans la feuille de calcul Feuil1 pour cet exemple
    ActiveChart.Location _
    Where:=xlLocationAsObject, Name:="graph"
 
    'Ajoute une série dans le graphique
    With ActiveChart
        .SeriesCollection.NewSeries
        .SeriesCollection(1).XValues = Tableau() 'Abscisses
        .SeriesCollection(1).Values = Tableau2() 'Ordonnées
        'Définit le type (Courbe)
        .ChartType = xlLine
    End With
End Sub
Le message d'erreur est le suivant :

erreur d'exécution '9' :
l'indice n'appartient pas à la sélection

Je specifie la ligne qui declenche l'erreur en rouge.

j'espère trouver de l'aide et remercie d'avance toutes les personnes qui pourront m'aider.