macro pour excel, parametrage auto de graphique

macro pour excel, parametrage auto de graphique - VB/VBA/VBS - Programmation

Marsh Posté le 13-12-2004 à 08:36:42    

salut  
 
je suis en train de programmer une macro en VB sous excel et j'ai besoin de parametrer un graphique!
 
en fait voila le probleme, je genere auomatiquement des tableaux et je souhaite generer des graphiques à partir de ces tableaux. Or le probleme c'est que ces tableaux ne faont jaais la même taille donc comment faire pour rentrer un parametre dans la zone de saisie ds donneés?
 
par un algo j'arrive à connaitre la taiil du tableau, mais impossible de rentrer ce parametre dans la programmation
 
exemple:
Range("B1:C5" ).select
 
mon tableau ne faisant pas toujours 5 lignes je souhaiterais lui programmer qualque chose dans le style:
 
Nbl= nombre de lignes
 
Range("B1:C+Nbl" ).select     mais ça ne marche pas, connaissez vous le bon parametrage
 
d'avance merci

Reply

Marsh Posté le 13-12-2004 à 08:36:42   

Reply

Marsh Posté le 13-12-2004 à 08:43:21    

Range("B1:C"+Nbl).select :??:

Reply

Marsh Posté le 13-12-2004 à 08:43:52    

avec une conversion peut-etre

Reply

Marsh Posté le 13-12-2004 à 09:17:36    

Range("B1:C"+Nbl).select  ça ne marche pas non plus
 
une conversion? qu'est-ce que tu veux dire ?

Reply

Marsh Posté le 13-12-2004 à 09:33:01    

Sois un peu plus explicite que "ca ne marche pas", d'ailleurs en te posant ce genre de questions tu pourrais surement régler ton problème.
 
Nbl est un entier, probable donc que la concaténation avec une chaine de caractère soit foireuse, convertit d'abord ton entier en chaine puis concatène-le.

Reply

Marsh Posté le 13-12-2004 à 09:52:15    

Voici comment j'ai résolu ce problème dans l'appli que je suis en train de réaliser. J'ai fait une macro qui permet de réaliser des graphiques automatiquement quelque soit le nombre de lignes et de colonnes.
 
D'abord, tu cherches à connaître le nombre max de lignes et de colonnes sur ta feuille:
 
Tu sélectionnes ta feuille
 
tu définis la ligne de début de ton tableau
 

Code :
  1. dim finLigne as Integer
  2. finLigne = 1
  3. Do While VarType(ActiveCell.Value) <> 0
  4.    finLigne = finLigne + 1
  5.    Cells(finLigne, 1).Select
  6. Loop


 
La même chose pour les colonnes
 

Code :
  1. Dim nbLigne As Integer
  2. finColonne = 1
  3. Do While VarType(ActiveCell.Value) <> 0
  4.    finColonne = finColonne + 1
  5.    Cells(1, finColonne).Select
  6. Loop


 
Tu définis tes variables pour la construction du graphe
 

Code :
  1. 'Variable stockant le graphique
  2. Dim objChart As Chart
  3.        
  4. 'Variable stockant la plage de cellules du graphique
  5. Dim objRange As Range


 
Tu récupère la plage du graphe à réaliser avec ceci:
 

Code :
  1. Set objRange = Worksheets(monfichier).Range(Worksheets(mafeuille).Cells(1, 1), Worksheets(mafeuille).Cells(finLigne - 1, finColonne))


 
Ajout d'une page de graphique
 

Code :
  1. Set objChart = ThisWorkbook.Charts.Add


 
Mise en forme du graphique
 

Code :
  1. With ActiveChart
  2. ...
  3. End With


 
Il doit y avoir mieux, mais cela marche dans mon cas.  :sol:


Message édité par Manu la Science le 13-12-2004 à 11:16:57

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 13-12-2004 à 11:24:54    

merci manu, je n'ai pas utilisé directement ton algo mais j'ai réussi à générer mon graphique!
je restai borné à vouloir rentrer un parametre dans une formule du type Range("B1:C5" ).select alors que je dois utiliser la forme:   objrange = Range(Cells(1, 2), Cells(5, 3))
 
merci de ton aide @++
 

Reply

Marsh Posté le 13-12-2004 à 13:08:15    

Je suis ravi d'avoir pu t'aider.
 
N'oublies pas de changer le titre de ton premier post pour marquer [résolu].
 
 :hello:


Message édité par Manu la Science le 13-12-2004 à 13:09:04

---------------
Proverbe chinois: il vaut mieux apprendre à pêcher à un mendiant que de lui donner du poisson...
Reply

Marsh Posté le 16-04-2005 à 00:31:06    

Range("B1:C"& Nbl"" ).select
 
Tu peux utiliser l'expression ci dessus également.

Reply

Marsh Posté le 17-04-2005 à 19:36:44    

manu que ce passe t'il si les valeurs que tu tests ne sont pas des chiffres?

Reply

Marsh Posté le 17-04-2005 à 19:36:44   

Reply

Marsh Posté le 22-08-2006 à 22:18:49    

desole si je remonte ce topic, mais c exactement ce que je cherche, je laisse donc un petit drapeau...

Reply

Marsh Posté le 23-08-2006 à 18:55:01    

bon ben finalement g fini par trouver, voici ma solution:
avec une petite regression a la fin, si ca peut aider quelqu'un dans le futur...

Code :
  1. Charts.Add
  2. ActiveChart.ChartType = xlXYScatter
  3. ActiveChart.SeriesCollection.NewSeries
  4. ActiveChart.SeriesCollection(1).XValues = Worksheets(mes(J)).Range("p2:p184" )
  5. ActiveChart.SeriesCollection(1).Values = Worksheets(mes(J)).Range("o2:o184" )
  6. ActiveChart.Location Where:=xlLocationAsObject, Name:=mes(J)
  7. ActiveChart.HasLegend = False
  8. ActiveChart.PlotArea.Select
  9.    
  10. Worksheets(mes(J)).ChartObjects(1).Chart.SeriesCollection(1).Trendlines.Add Type:=xlPolynomial, DisplayEquation:=True, DisplayRSquared:=True



---------------
Ma vie en Polonie: http://ketchupnchantilly.blogspot.com/
Reply

Marsh Posté le 25-06-2009 à 11:46:55    

Salut à toutes et à tous,
 
j'ai lu les posts, mais je suis un débutant dans les macro excel et je ne sais pas comment l'implémenter ...
 
"parametrage auto de graphique"
 
comment avez-vous fait finalement ?
 
PS: je bloque sur la réponse de Manu la Science:
 

Code :
  1. Set objRange = Worksheets(monfichier).Range(Worksheets(mafeuille).Cells(1, 1), Worksheets(mafeuille).Cells(finLigne - 1, finColonne))


 
Merci. Théo

Reply

Sujets relatifs:

Leave a Replay

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