macro Excel VBA : Création automatique de 140 graphiques

macro Excel VBA : Création automatique de 140 graphiques - VB/VBA/VBS - Programmation

Marsh Posté le 11-02-2007 à 11:12:11    

Bonjour,
 
Je souhaite générer au moins 140 graphes sur l'évolution sur 1 an de
mes données.
Toutefois, j'ai un bug car si j'imagine que toutes mes données sont
sur un fichier et que sur 140 lignes, je créée mes graphes, mon
incrémentation ne marche pas, si je n'ai pas de variable et que je
créée 140 fois le même graphe, ça marche, mais, pour des lignes
différentes, rien, les 140 graphes sont sans courbe, donc, je n'ai pas
su écrire mon incrémentation, un truc que je cherche encore et que je
ne sais pas, donc, si quelqu'un connait mon erreur et vu que je
travaille surtout le soir là-dessus, ça me permettrait d'avancer,
merci !
 
 
 
J'ai compté que ma macro fonctionnera sur 140 courbes à exécuter
automatiquement, ce qui est gros.
 
J'ai 1 seul bug qui est que ma ligne d'incrémentation, VBA ne la
comprend pas :
 
Si je créée 5 fois la même courbe, ça marche, mais, si je veux prendre
en compte chaque ligne avec ses données, il crée 5 tableaux vides,
donc, il ne comprend pas ce que j'ai écrit, c'est bien écrit, mais
non, donc, je cherche une autre solution ou où est mon erreur ?
 
 
 
Ceci ne marche pas :
 
lignier1 = Chr(34) & "=" & "(tableau!R" & i & "C3," & "tableau!R"
& i & "C4," _
& "tableau!R" & i & "C6," & "tableau!R" & i & "C8," & "tableau!R"
& i & "C10)" & Chr(34)
 
ActiveChart.SeriesCollection(1).Values = lignier1
 
 
 
dans uen cellule, j'ai écrit ce que ça donne :
 
"=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!R2C10)"
 
de 2 à 5 comme prévu et il ne me donne aucune courbe ?
 
 
 
J'ai essayé une autre méthode, mais ,j'ai là aussi un problème
d'incrémentation.
 
 
 
Merci.
 
 
 
 
 
Sub courbes()
'
' courbes Macro
' Macro enregistrée le 10/02/2007 par pc2
'
'
' version2 Macro
' Macro enregistrée le 09/02/2007 par eric31
'
 
'maxlig = Range("B65535" ).End(xlUp).Row
maxlign = 5
 
 
For i = 2 To maxlign
 
Sheets("tableau" ).Select
Charts.Add
'ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
"Courbes"
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = _
"=(tableau!R1C3,tableau!R1C4,tableau!R1C6,tableau!R1C8,tableau!
R1C10)"
 
lignier1 = Chr(34) & "=" & "(tableau!R" & i & "C3," & "tableau!R"
& i & "C4," _
& "tableau!R" & i & "C6," & "tableau!R" & i & "C8," & "tableau!R"
& i & "C10)" & Chr(34)
 
ActiveChart.SeriesCollection(1).Values = lignier1
 
'voir ActiveChart.SeriesCollection(1).Values = _
"=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!
R2C10)"
'"=(tableau!R2C3,tableau!R2C4,tableau!R2C6,tableau!R2C8,tableau!
R2C10)"
 
ActiveChart.SeriesCollection(1).Name = "=""1ereserie"""
 
'lignier2 = Chr(34) & "=" & "(tableau!R" & i & "C5," & "tableau!R"
& i & "C7," _
& "tableau!R" & i & "C9," & "tableau!R" & i & "C11,"
& "tableau!R" & i & "C13)" & Chr(34)
 
'ActiveChart.SeriesCollection(2).Values = lignier2
 
'ActiveChart.SeriesCollection(2).Values = _
"=(tableau!R(i)C5,tableau!R(i)C7,tableau!R(i)C9,tableau!R(i)
C11,tableau!R(i)C13)"
'tableau!R8C3,tableau!R8C4,tableau!R8C6,tableau!R8C8,tableau!
R8C10
 
'ActiveChart.SeriesCollection(2).Name = "=""2emeserie"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="graphmaison"
 
'ActiveChart.Axes(xlCategory).Select
ActiveChart.PlotArea.Select
ActiveChart.ChartType = xlLine
'ActiveChart.ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
"Courbes" '"Courbes à deux axes"
 
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = False
.Axes(xlValue, xlPrimary).HasTitle = False
'.Axes(xlCategory, xlSecondary).HasTitle = False
'.Axes(xlValue, xlSecondary).HasTitle = False
End With
Sheets("graphmaison" ).Cells(i, 1) = lignier1
 
Sheets("tableau" ).Select
 
Next
'
 
 
'
ActiveSheet.Shapes.AddTextEffect
(msoTextEffect11, "courbes", "Impact", 20#, _
msoFalse, msoFalse, 249#, 147#).Select
Selection.ShapeRange.IncrementLeft 208.5
Selection.ShapeRange.IncrementTop -30.75
Range("H15" ).Select
End Sub

Reply

Marsh Posté le 11-02-2007 à 11:12:11   

Reply

Marsh Posté le 11-02-2007 à 12:02:11    

bonjour,
un peu au hasard mais je le sens pas ton Chr(34)
lignier1 = Chr(34) & "=" & "(tableau!R" & i & "C3," &...
Je le verrais mieux comme ça  :
lignier1 = "=(tableau!R" & i & "C3," & ...
ça devrait le faire...
A+

Reply

Marsh Posté le 11-02-2007 à 12:13:48    

Oui, le Chr(34), c'était pour le ", mais je vais tester cette solution, merci.

Reply

Marsh Posté le 11-02-2007 à 12:29:25    

Merci, en revanche, j'ai un avancé, car je pense que c'est Chr(34) qui ne me done pas " comme je veux, j'ai remplacé le tout par ceci :
    lignier1 = "=(tableau!R" & i & "C3," & "tableau!R" & i & "C4," _
     & "tableau!R" & i & "C6," & "tableau!R" & i & "C8," & "tableau!R" & i & "C10)"
là, ça marche, j'ai mes courbes, c'est déjà bien, sauf que ce que je n'ai pas compris, c'est que si j'écrit ce que celà donne, Excel ne comprends pas ce contenu, j'ai #VALEUR! mais bon, tant pis, j'ai au moins mes courbes ! Le bug, en revanche et que je voudrai supprimer, c'est que la macro me créée un double du bouton de lancement de la macro, chaque fois que j'appuie sur le bouton macro, le bouton est dupliqué autant de fois que je clique sur ma feuille tableau ?
Est-ce que quelqu'un connait ce bug ?
Merci.

Reply

Marsh Posté le 11-02-2007 à 12:50:11    

Bonjour,
Pour ce genre de truc un fichier joint est inévitable.  
Tu supprimes toutes les feuilles qui ne sont pas indispensables,
Tu sopprimes <135 lignes sur les 140 et tu nous donnes un fichier assez semblables à ce que travailles.  
Tu ne gardes que le code nécessaire et le bouton en question...
Parce que si en plus on doit simmuler un classeur qui ressemble au tien -erreurs incluses- on y arrivera jamais !
A+


Message édité par galopin01 le 11-02-2007 à 12:51:46
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed