cs_pafacile
Messages postés30Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention22 juillet 2008
-
27 juin 2008 à 17:07
cs_pafacile
Messages postés30Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention22 juillet 2008
-
28 juin 2008 à 18:28
Bonjour à tous,
Je travaille sous Excel et je commence à m'arracher les cheveux...
Voilà mon soucis:
J'ai crée une macro qui trace un graphique tout simple à partir de données (des valeurs chiffrées ordinaires) qui sont entrées sur une ligne (A13 jusqu'à P13).
J'ai aussi demandé dans ma macro qu'un courbe de tendance soit tracée.
Mes problèmes:
1- Comment puis je lui dire de ne pas tracer cette courbe de tendance si les dernières cellules sont vides? En effet, si par exemple les cellules M13 à P13 ne contiennent aucune valeurs cela fausse la courbe de tendance (qui est une polynomiale). Dépendament du degrès choisi celle ci fait un pic vers le haut ou vers le bas...ce qui fausse pas mal le résultat!
2- Si par hasard la cellule B13 (au milieu des autres) ne contient aucune valeur, comment faire pour que lors du tracage du graph, cette cellule vide soit ignorée?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 juin 2008 à 17:35
Salut,
dans ton cas tu n'auras pas d'autre choix que de creer un tableau de donnés intermediaire que tu vas creer en prenant soin d'enlever toute les cellules vide.
Cela peu se faire avec du VBA si tu ne veux pas le faire a la main
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 juin 2008 à 17:55
...
cela me parait plus compliqué que de me donner le code que tu as deja commencer. cela me permetra aussi de connaitre la position et la taille de ton tableau source.
cs_pafacile
Messages postés30Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention22 juillet 2008 27 juin 2008 à 19:57
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 2008-06-26 par marhad
'
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("DONNEES").Range("A12:O13"), PlotBy _
:=xlRows
Application.DisplayAlerts = False
If WsExist("Nx 10 coups") Then
Sheets("Nx 10 coups").Delete
End If
Application.DisplayAlerts = True
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Nx 10 coups"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Qualité de l'anti-reflet"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=2
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 3
.Fill.BackColor.SchemeColor = 4
End With
Dim I As Integer
For I = 1 To 255
If Cells(13, I) = "" Then
Else
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=3 _
, Forward:=0, Backward:=0, DisplayEquation:=False, DisplayRSquared:= _
False).Select
End If
Next I
End Sub
Function WsExist(Nom$) As Boolean
On Error Resume Next
WsExist = Sheets(Nom).Index
End Function
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 27 juin 2008 à 20:12
...
encore une petite precision dans ton tableau on peut trouver une cellules vide par-ci par-la ou sera systematiquement une colonne entiere ou une ligne entiere ?
cs_pafacile
Messages postés30Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention22 juillet 2008 27 juin 2008 à 20:21
En fait ce n'est qu'une grande ligne de données... Mais, en effet, il se peut que certaines cellules soient vides, que ce soit au milieu des données ou à la fin de celles ci....
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 28 juin 2008 à 06:02
...
finalement j' ai peut etre bien fait de temporiser un peu, car il me semblait qu'une propriete pour ce type de cas existait. Je te propose donc une autre solution(en bleu dans le code)
Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 2008-06-26 par marhad
'
Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=Sheets("DONNEES").Range("A12:O13"), PlotBy _
:=xlRows
Application.DisplayAlerts = False
If WsExist("Nx 10 coups") Then
Sheets("Nx 10 coups").Delete
End If
Application.DisplayAlerts = True
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Nx 10 coups"
With ActiveChart
.DisplayBlanksAs = xlInterpolated
.HasTitle = True
.ChartTitle.Characters.Text = "Qualité de l'anti-reflet"
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
End With
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Fill.TwoColorGradient Style:=msoGradientHorizontal, Variant:=2
With Selection
.Fill.Visible = True
.Fill.ForeColor.SchemeColor = 3
.Fill.BackColor.SchemeColor = 4
End With
Dim I As Integer
For I = 1 To 255
If Cells(13, I) = "" Then
Else
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Trendlines.Add(Type:=xlPolynomial, Order:=3 _
, Forward:=0, Backward:=0, DisplayEquation:=False, DisplayRSquared:= _
False).Select
End If
Next I
End Sub
trois constantes possible pour cette propriete : xlNotPlotted, xlInterpolated, or xlZero
Si cela ne te convient pas revient et on regardera une solution plus classique.