J'ai sauté une marche mais me revoilou ;)
Donc, au lieu de mettreCitation:
Envoyé par tu
tu metsCitation:
For i = NbLégendes To 4 Step -1
En mettant ton seuil min en 4ème positionCode:For i = NbLégendes To 5 Step -1
C'est un pb ?
Version imprimable
J'ai sauté une marche mais me revoilou ;)
Donc, au lieu de mettreCitation:
Envoyé par tu
tu metsCitation:
For i = NbLégendes To 4 Step -1
En mettant ton seuil min en 4ème positionCode:For i = NbLégendes To 5 Step -1
C'est un pb ?
sauf que la bonne legende de mon 2eme seuil sera pas la 4eme.Code:For i = NbLégendes To 5 Step -1
si il en faut 4 sous seuil pour faire mon premier alors il faudra garder la 3eme legende pour mon 1er seuil et virer 4 5 6 et garder la 7 pour mon seuil 2 ou un truc du genre... enfin peut importe pour l'instant je regarde le boulot du comcombre car sa solution si j'arrive à la faire marcher sera beaucoup plus simple :D
:scarymov:
bon va falloir qu'on explique bordel !!
le tiens fonctionne tres bien, j'ai recréé un fichier de la meme structure et j'ai de nouveau le probleme !!
je le joint :
Pièce jointe 3090
va falloir que tu me dise pas à pas comme tu fais parce que là je vois pas trop là différence !! j'ai nommé les feuille et graph comme toi et j'ai juste copié collé ta macro et ca va passsss :evilred:
Ouf j'ai trouvé :)
En fait ça vient de ton type de graphique qui n'est pas compatible avec ce que je veux faire. un conseil n'utilise plus ce type de graphique.
Toi tu as utilisé "Courbes" qui ne laisse qu'un choix d'abscisse. ici tu avais donner A6:A8 pour les deux premières séries. Par conséquent quand tu crée le seuil, il ne prend que les valeurs des ordonnées (cad 0.4 et 0.4) et ignore les abscisses. Tu comprends alors que les deux premières abscisses sont celles en A6 et A7 cad 1 et 2. Le code associe donc les ordonnées 0.4 à 1 et 2 en abscisse. C'est tt à fait normal.
En gros faut que tu mettes ton type de graphique en "nuage de points reliés par une courbe". Ainsi pour chaque série tu as le choix des abscisses et ordonnées.
Pour cela clic droit sur le graph puis clic sur "type de graphique"
Je te renvoie la correction au cas où :p
Hmmm,
bravo ;)
jvais tester ca cet aprem !!
EDIT : à peine j'ai changé le type du graphique que mes seuils ont pris toute la largeur :D
c'est pas courant ca comme type de graphique le nuage de point ! t'aurais pu soulever le probleme bien avant quand meme !! :lol: :lol: :mouarf:
Hop,
plusieurs questions
tout d'abord voici le code :
Alors j'ai quelques petits soucis, j'ai trouvé le nombre à mettre, comme je le supposais c'est le nombre qui correspond à la date (pour le trouver on met une date dans excel et on change el format en standart). Ma premiere question arrive :DCode:
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 Sub TracerSeuils(ByVal Mini As Variant, ByVal Maxi As Variant, ByVal NomGraph As String, ByVal Seuil1 As Double, ByVal Seuil2 As Double) Dim XmiN, XmaX As Variant Dim NbSeries, J As Byte Charts(NomGraph).Activate NbSeries = ActiveChart.SeriesCollection.Count For J = 1 To NbSeries If ActiveChart.SeriesCollection(J).Name = "Seuil1" Then ActiveChart.SeriesCollection("Seuil1").Delete Exit For End If Next J NbSeries = ActiveChart.SeriesCollection.Count For J = 1 To NbSeries If ActiveChart.SeriesCollection(J).Name = "Seuil2" Then ActiveChart.SeriesCollection("Seuil2").Delete Exit For End If Next J NbSeries = ActiveChart.SeriesCollection.Count ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil1" ActiveChart.SeriesCollection("Seuil1").XValues = "={" & Mini & "," & Maxi & "}" ActiveChart.SeriesCollection("Seuil1").Values = "={0.004,0.004}" '"={" & Seuil1 & "," & Seuil1 & "}" NbSeries = ActiveChart.SeriesCollection.Count ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil2" ActiveChart.SeriesCollection("Seuil2").XValues = "={" & Mini & "," & Maxi & "}" ActiveChart.SeriesCollection("Seuil2").Values = "={0.04,0.04}" '"={" & Seuil2 & "," & Seuil2 & "}" ActiveChart.SeriesCollection("Seuil2").AxisGroup = 2 End Sub Sub test() Call TracerSeuils(38908, 38910, "ev25", 0.004, 0.04) End Sub
quelle fonction VBA permet de faire ca?
ensuite j'ai eu une surprise en apssant mes seuils par parametre (code vert)
voici le graph sans les passer
Pièce jointe 3092
et en les passant
Pièce jointe 3093
(berk !)
tout ca car (je pense) j'ai regardé en pas à pas et les Seuil1 et Seuil2 valent 0,004 et 0,04 et non plus 0.004 et 0.04
comment puis je faire pour qu'il prenne un "." et non une "," ? :?
EDIT : Hop, j'ai trouvé pour la date en nombre je fait
et ca marche ;)Code:CDbl(CDate("10/07/06"))
manque plus que l'histoire des "," en "." :? :?
Regarde ce que tu as dans les données sources de ton graphe pour le seuil correspondant ;)
Je te propose ma solution (j'ai déjà eu le même problème)
Grâce à ça tu peux le forcer à la fin en séparant partie entière et décimale à les concaténer avec un point ou une virgule au choix ;)Code:
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 Option Explicit Sub test() Dim X, X_Entier, X_Temp, X_Dec, Longueur As Variant Dim O, J As Integer X = 125.236 For O = 1 To Len(X) If Mid(X, O, 1) = "," Then Longueur = Len(Mid(X, O + 1, Len(X) - O)) Exit For End If Next O X_Entier = Fix(X) X_Temp = X For J = 1 To Longueur X_Temp = X_Temp * 10 Next J If Left(X, 1) = 0 Then X_Dec = CInt(X_Temp) Else X_Dec = CInt(Right(X_Temp, Len(X) - O)) End If X = X_Entier & "." & X_Dec End Sub
P.S:j'ai peut être un peu craqué pour trouver la partie décimale... Il se peut qu'il existe des fonctions déjà tt faites mais bon :D
Plop,
qui c'est le roi du bidouillage? :lol:
en fait en passant les seuils en string ca marche bien ;)Code:
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 Sub TracerSeuils(ByVal Mini As Variant, ByVal Maxi As Variant, ByVal NomGraph As String, ByVal Seuil1 As String, ByVal Seuil2 As String) Dim XmiN, XmaX As Variant Dim NbSeries, J As Byte Mini = CDbl(CDate(Mini)) Maxi = CDbl(CDate(Maxi)) Charts(NomGraph).Activate NbSeries = ActiveChart.SeriesCollection.Count For J = 1 To NbSeries If ActiveChart.SeriesCollection(J).Name = "Seuil1" Then ActiveChart.SeriesCollection("Seuil1").Delete Exit For End If Next J NbSeries = ActiveChart.SeriesCollection.Count For J = 1 To NbSeries If ActiveChart.SeriesCollection(J).Name = "Seuil2" Then ActiveChart.SeriesCollection("Seuil2").Delete Exit For End If Next J NbSeries = ActiveChart.SeriesCollection.Count ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil1" ActiveChart.SeriesCollection("Seuil1").XValues = "={" & Mini & "," & Maxi & "}" ActiveChart.SeriesCollection("Seuil1").Values = "={" & Seuil1 & "," & Seuil1 & "}" '"={0.004,0.004}" NbSeries = ActiveChart.SeriesCollection.Count ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(NbSeries + 1).Name = "Seuil2" ActiveChart.SeriesCollection("Seuil2").XValues = "={" & Mini & "," & Maxi & "}" ActiveChart.SeriesCollection("Seuil2").Values = "={" & Seuil2 & "," & Seuil2 & "}" '"={0.04,0.04}" ActiveChart.SeriesCollection("Seuil1").AxisGroup = 2 End Sub Sub test() Call TracerSeuils("10/07/06", "12/07/06", "ev25", "0.004", "0.04") 'Debug.Print CDbl(CDate("10/07/06")) End Sub
là je galere juste un peu pour le ratachement des courbes au axes mais ca se termine je pense !! :D (et c'est pas trop tot !)
EDIT : oué là tu craque trop le comcombre !!
deja si tu met X =123.4444 tu trouvera jamais de ","
ensuite pour la partie decimale INSTR renvoit la position de la premiere occurence d'un chaine dans une autre (tu t'en sert pour trouver la place de ta "," et tu fait un right 8O )
Pfffff mechant va !!
en plus si tu aurais regardé mon EDIT... t'es qu'un sale copieur en plus !! :P
bon allez je met résolu car apres c'est juste de l'adaptation, le code que j'ai mis au dessus fonctionne pour tracer un seuil avec des dates à l'abscisse !
FINI !!
Merci à tous ceux qui ont essayé de m'aider :D
euh juste pour préciser les gens (j'ai vérifié), si vs rentrezet ben vs vs apercevrez que VBA a comprisCode:X=123.4444
... Et toc :PCode:X=123,4444
Vs avez qu'à vérifier, ça prend deux secondes. Dans un procédure vs marquez, puis dessous une ligne qui sert à rien genreCode:X=123.4444
, vs exécutez en pas à pas et lorsque VBA a lu la ligne du X vs mettez votre jolie souris dessus... Miracle vs voyez s'afficher X=123,444 NACode:a=1
P.S:je sais pas si la remarque m'était destinée (le bidouillage) mais effectivment j'avoue que j'aime bien bisouiller ;)
mais oui c'est ca fait ton malin vas y !! :lol:
ca parait pas plus performant que tes 120000 lignes de code? :P :PCode:
1
2
3 For i = 1 To Len(SeuilCPU) If (Mid(SeuilCPU, i, 1) = ",") Then Mid(SeuilCPU, i, 1) = "." Next
J'ai vu dans un autre post que tu voulais mettre en forme plus de 1000 lignes de code !! Ca m'etonne pas :lol:
tu voulais ecrire "oui" dans les ligne 1 à 1000 de la colonne A? :mouarf:
Oh oui je suis mechant meme si tu m'a beaucoup aidé (demande à ouskel 8O )