Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3171 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro pour excel, parametrage auto de graphique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro pour excel, parametrage auto de graphique

n°921557
kast
Posté le 13-12-2004 à 08:36:42  profilanswer
 

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

mood
Publicité
Posté le 13-12-2004 à 08:36:42  profilanswer
 

n°921560
boulax
Inserer phrase hype en anglais
Posté le 13-12-2004 à 08:43:21  profilanswer
 

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

n°921561
boulax
Inserer phrase hype en anglais
Posté le 13-12-2004 à 08:43:52  profilanswer
 

avec une conversion peut-etre

n°921575
kast
Posté le 13-12-2004 à 09:17:36  profilanswer
 

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

n°921587
boulax
Inserer phrase hype en anglais
Posté le 13-12-2004 à 09:33:01  profilanswer
 

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.

n°921605
Manu la Sc​ience
...la science ... pas toujours
Posté le 13-12-2004 à 09:52:15  profilanswer
 

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...
n°921654
kast
Posté le 13-12-2004 à 11:24:54  profilanswer
 

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 @++
 

n°921781
Manu la Sc​ience
...la science ... pas toujours
Posté le 13-12-2004 à 13:08:15  profilanswer
 

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...
n°1049331
FisherX69
Posté le 16-04-2005 à 00:31:06  profilanswer
 

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

n°1050248
scuny
Posté le 17-04-2005 à 19:36:44  profilanswer
 

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

mood
Publicité
Posté le 17-04-2005 à 19:36:44  profilanswer
 

n°1429672
Biroute
j'aime les andouillettes !:op
Posté le 22-08-2006 à 22:18:49  profilanswer
 

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

n°1430164
Biroute
j'aime les andouillettes !:op
Posté le 23-08-2006 à 18:55:01  profilanswer
 

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/
n°1899073
uptoyu
Posté le 25-06-2009 à 11:46:55  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro pour excel, parametrage auto de graphique

 

Sujets relatifs
[VBA Excel] Trouver la derniere ligne de la derniere page impriméeOuvrir une feuille excel en VBA
Aide Excel et OutlookFaire un bouton sur excel
[VBA Excel] [Résolu] Pb d'import de données txt dans excel avec VBA.[VBA Excel] Remplir 50 labels en une seule commande ? [résolu]
Ecrire dans un fichier excelAutomatiser un solveur sur excel en VBA
[Merise] besoin d'aide MCD ExcelAfficher à partir d'un userform une feuille excel
Plus de sujets relatifs à : macro pour excel, parametrage auto de graphique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR