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:
Le message d'erreur est le suivant :
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
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.
Partager