skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008
-
17 juil. 2008 à 11:06
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008
-
24 juil. 2008 à 08:45
Bonjour,
Je débute dans la programmation en VBA excel et j'ai un graphique à faire... Mon graphique doit ressembler à une bombonne de gaz, j'ai réussi à faire les 2 demi cercles (et encore) mais pour ce qui est des 2 segments qui doivent les rejoindre je piétine... Si quelqu'un pouvait m'aider svp
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 17 juil. 2008 à 11:30
J'ai fait le code suivant ça fonctionne plus ou moins bien car je ne comprend pas pourquoi il me fait un trait qui relie mon demi cercle au point (0,0), c'est étrange...
Dim Tableau3(10) As Double, Tableau4(10) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau3(i) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau4(i) = Rayon * Sin((Pi - (i - 1) * (Pi / 9)))
Next i
'Ajoute une série dans le graphique
With ActiveChart
.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = Tableau3() 'Abscisses
.SeriesCollection(2).Values = Tableau4() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
J'ai fait la même démarche pour l'autre demi cercle...... En gros il faudrai juste relier ces 2 demi cercle par des droites mais rien de ce que j'ai essayé ne fonctionne
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 17 juil. 2008 à 14:55
ah en quoi cela t'as surpris je vois pas comment on peut mettre ça dans un Userform étant donné que j'en ai déjà un qui me donne les composantes pour faire justement le dessin et autre...
C'est vrai qu'il y avait peut etre une meilleure façon de faire mais comme je ne savais pas trop comment m'y prendre j'ai farfouillé un peu dans les différents forums et j'ai pris ce qui m'interessait... Il est vrai que je préférerai que le graphique s'affiche dès l'ouverture du fichier mais pas sur les données d'entrée... donc c'est pour ça que j'ai opté pour ce procedé malgré que je n'ai pas trouvé comment le déplacé sur ma feuille excel!
Merci quand meme de me donner un coup de main car la je seche carrement!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 21 juil. 2008 à 10:16
Bonjour,
Bon, j'ai trouver une solution, il faut dupliquer le point, voici ce que j'ai obtenu :
Dim Tableau3(0 To 11) As Double, Tableau4(0 To 11) As Double
Dim i As Long
Dim Rayon As Double
Rayon = 10
Dim Pi As Double
Pi = 3.14159
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau3(i - 1) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau4(i - 1) = Rayon * Sin((Pi - (i - 1) * (Pi / 9)))
Next i
'Dim TblX(0 to 2) as bouble
Tableau3(10) = Tableau3(9) 'Doublon pour éviter la déformation de la courbe
Tableau3(11) = Tableau3(0) 'Point d'origine
Tableau4(10) = Tableau4(9) 'Doublon pour éviter la déformation de la courbe
Tableau4(11) = Tableau4(0) 'Point d'origine
'Ajoute une série dans le graphique
With ActiveChart
Do While .SeriesCollection.Count < 1
.SeriesCollection.NewSeries
Loop
.SeriesCollection(1).XValues = Tableau3() 'Abscisses
.SeriesCollection(1).Values = Tableau4() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 22 juil. 2008 à 10:11
Et bien je te remercie pour ton aide, mais il y a un problème quand je compile... Il me dit qu'il y a un problème avec l'instruction with...? c'est l'erreur 91, j'ai regardé dans l'aide et ils disent que c'est lorsque un objet n'est pas défini or tous les objets ici sont définis...? et je ne peux pas passer outre cette erreur et compiler quand même...? En tout cas merci pour ta réponse...!
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 22 juil. 2008 à 10:54
C'est bon j'ai réussi à résoudre le problème maintenant quand je remet la même formulation mais pour faire le demi cercle du bas et bien il me dit qu'il y a un autre problème (erreur 1004) alors que je ne fais que rajouter une variable qui est la longueur entre les deux demi cercle...?
As tu une réponse...?
Merci par avance
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 22 juil. 2008 à 15:18
il signale l'erreur au niveau de la définition du deuxieme demi cercle
.SeriesCollection(2).XValues = Tableau7() 'Abscisses
.SeriesCollection(2).Values = Tableau8() 'Ordonnées
voila c'est sur une des 2 lignes... je vois pas pourquoi!!!
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 22 juil. 2008 à 15:32
Bonjour,
Est-ce que tu peux me coller le code qui pose pb (avec le remplissage et tout) STP ?
Car je crois que c'est un pb de limite tableau, mais je n'en suis pas sûr, car tu ne m'a pas coller le message qui va avec l'erreur.
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 22 juil. 2008 à 16:10
Voila le code et l'erreur c'est: Erreur définie par l'application ou par l'objet... Erreur d'exécution 1004
Dim Tableau5(10) As Double, Tableau6(10) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau5(i) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau6(i) = Rayon * Sin((Pi - (i - 1) * (Pi / 9))) - Virole
Next i
Dim Tableau7(0 To 11) As Double, Tableau8(0 To 11) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau7(i - 1) = Rayon * Cos((Pi + (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau8(i - 1) = Rayon * Sin((Pi + (i - 1) * (Pi / 9))) - Virole
Next i
'Dim TblX(0 to 2) as double
Tableau7(10) = Tableau7(9) 'Doublon pour éviter la déformation de la courbe
Tableau7(11) = Tableau7(0) 'Point d'origine
Tableau8(10) = Tableau8(9) 'Doublon pour éviter la déformation de la courbe
Tableau8(11) = Tableau8(0) 'Point d'origine
'Ajoute une série dans le graphique
With ActiveChart
Do While .SeriesCollection.Count < 1
.SeriesCollection.NewSeries
Loop
.SeriesCollection(2).XValues = Tableau7() 'Abscisses
.SeriesCollection(2).Values = Tableau8() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 23 juil. 2008 à 09:41
Bonjour,
Merci ça fonctionne mais maintenant j'ai essayé de relier les deux demi cercle mais quand je mets par exemple
Tableau3(11)=Tableau(11)
Tableau8(11)=Tableau2(11)
Rien ne se passe... Pas de nouvelles séries rien
:-(
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 23 juil. 2008 à 11:48
Voila mon prgm entier
Sub Creation_Graphique_Par_Tableau()
Dim Rayon As Double, Pi As Double
Dim i As Byte
Dim Virole As Double
Dim Tableau(10) As Double, Tableau2(10) As Double
Virole = 6482
Rayon = 558
Pi = 3.14152
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau(i) = Rayon * Cos((Pi + (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau2(i) = Rayon * Sin((Pi + (i - 1) * (Pi / 9)))
Next i
'Création graphique
Charts.Add
'Définit la localisation du graphique:
ActiveChart.Location _
where:=xlLocationAsObject, Name:="Aménagement"
Dim Tableau3(0 To 11) As Double, Tableau4(0 To 11) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau3(i - 1) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau4(i - 1) = Rayon * Sin((Pi - (i - 1) * (Pi / 9)))
Next i
'Dim TblX(0 to 2) as bouble
Tableau3(10) = Tableau3(9) 'Doublon pour éviter la déformation de la courbe
Tableau3(11) = Tableau3(0) 'Point d'origine
Tableau4(10) = Tableau4(9) 'Doublon pour éviter la déformation de la courbe
Tableau4(11) = Tableau4(0) 'Point d'origine
'Ajoute une série dans le graphique
With ActiveChart
Do While .SeriesCollection.Count < 2
.SeriesCollection.NewSeries
Loop
.SeriesCollection(1).XValues = Tableau3() 'Abscisses
.SeriesCollection(1).Values = Tableau4() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
Dim Tableau5(10) As Double, Tableau6(10) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau5(i) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau6(i) = Rayon * Sin((Pi - (i - 1) * (Pi / 9))) - Virole
Next i
Dim Tableau7(0 To 11) As Double, Tableau8(0 To 11) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau7(i - 1) = Rayon * Cos((Pi + (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau8(i - 1) = Rayon * Sin((Pi + (i - 1) * (Pi / 9))) - Virole
Next i
'Dim TblX(0 to 2) as double
Tableau7(10) = Tableau7(9) 'Doublon pour éviter la déformation de la courbe
Tableau7(11) = Tableau7(0) 'Point d'origine
Tableau8(10) = Tableau8(9) 'Doublon pour éviter la déformation de la courbe
Tableau8(11) = Tableau8(0) 'Point d'origine
'Ajoute une série dans le graphique
With ActiveChart
Do While .SeriesCollection.Count < 2
.SeriesCollection.NewSeries
Loop
.SeriesCollection(2).XValues = Tableau7() 'Abscisses
.SeriesCollection(2).Values = Tableau8() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
En fait je voudrais relier les 2 demi cercle et je pensais qu'en lui mettant que les 2 points sont égaux alors il allait les relier mais je pense que ça doit pas fonctionner...
Peut être faut il refaire un tableau sauf que je vois pas quoi mettre dedans comme boucle
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 23 juil. 2008 à 12:00
Bonjour,
Voici une version temporaire :
Sub Creation_Graphique_Par_Tableau()
Dim Rayon As Double, Pi As Double
Dim i As Byte
Dim Virole As Double
Dim Tableau(10) As Double, Tableau2(10) As Double
Virole = 6482
Rayon = 558
Pi = 3.14152
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau(i) = Rayon * Cos((Pi + (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau2(i) = Rayon * Sin((Pi + (i - 1) * (Pi / 9)))
Next i
'Création graphique
'WARNING : j'ai supprimer (commenté) pour éviter une erreur
'Charts.Add
'Définit la localisation du graphique:
'ActiveChart.Location _
'where:=xlLocationAsObject, Name:="Aménagement"
Dim Tableau3(0 To 11) As Double, Tableau4(0 To 11) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau3(i - 1) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau4(i - 1) = Rayon * Sin((Pi - (i - 1) * (Pi / 9)))
Next i
'Dim TblX(0 to 2) as bouble
Dim Tableau5(10) As Double, Tableau6(10) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau5(i) = -Rayon * Cos((Pi - (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau6(i) = Rayon * Sin((Pi - (i - 1) * (Pi / 9))) - Virole
Next i
Dim Tableau7(0 To 11) As Double, Tableau8(0 To 11) As Double
'Création du tableau pour les Abscisses
For i = 1 To 10
Tableau7(i - 1) = Rayon * Cos((Pi + (i - 1) * (Pi / 9)))
Next i
'Création d'un tableau pour les Ordonnées
For i = 1 To 10
Tableau8(i - 1) = Rayon * Sin((Pi + (i - 1) * (Pi / 9))) - Virole
Next i
'Dim TblX(0 to 2) as double
Tableau3(10) = Tableau3(9) 'Doublon pour éviter la déformation de la courbe
Tableau3(11) = Tableau7(0) 'Point d'origine
Tableau4(10) = Tableau4(9) 'Doublon pour éviter la déformation de la courbe
Tableau4(11) = Tableau8(0) 'Point d'origine
Tableau7(10) = Tableau7(9) 'Doublon pour éviter la déformation de la courbe
Tableau7(11) = Tableau3(0) 'Point d'origine
Tableau8(10) = Tableau8(9) 'Doublon pour éviter la déformation de la courbe
Tableau8(11) = Tableau4(0) 'Point d'origine
'Ajoute une série dans le graphique
With ActiveChart
Do While .SeriesCollection.Count < 1
.SeriesCollection.NewSeries
Loop
.SeriesCollection(1).XValues = Tableau3() 'Abscisses
.SeriesCollection(1).Values = Tableau4() 'Ordonnées
.SeriesCollection(2).XValues = Tableau7() 'Abscisses
.SeriesCollection(2).Values = Tableau8() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With
skyvi
Messages postés16Date d'inscriptionjeudi 17 juillet 2008StatutMembreDernière intervention22 juillet 2008 23 juil. 2008 à 13:55
Il y a une erreur 91 (variable objet ou variable de bloc With non défini) quelque part à la fin du prgm...
Mais je ne vois pas ou étant donné que c'est la même structure qu'auparavent!!
MERCI a nouveau
With ActiveChart
Do While .SeriesCollection.Count < 2
.SeriesCollection.NewSeries
Loop
.SeriesCollection(1).XValues = Tableau3() 'Abscisses
.SeriesCollection(1).Values = Tableau4() 'Ordonnées
.SeriesCollection(2).XValues = Tableau7() 'Abscisses
.SeriesCollection(2).Values = Tableau8() 'Ordonnées
'Définit le type (Courbe)
.ChartType = xlXYScatterSmooth
End With