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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  besoin d'aide pour le code d'1 graphique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

besoin d'aide pour le code d'1 graphique

n°1076248
Le_rameur
Posté le 09-05-2005 à 13:35:24  profilanswer
 

Bonjour tout le monde,
 
Je débute la prgmation VBA, et une fois encore j'ai 1 petit problème.
Ce forum m'a déjà bien aidé, j'espère que vous seriez me répondre  :bounce:  
 
Je dois tracer un graphique en partant d'une liste de données qui peut être augmentée par une autre macro, donc g pas trop le choix il faut que j'utilise la fonction xlDown
 
je vous montre le code:
 
    Range("C4" ).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("G4" ).Activate
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Charts.Add
    ActiveChart.ChartType = xlLineMarkersStacked
    ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:Selection.End(xlDown), G4:Selection.End(xlDown)" _        ), PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphe1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
 
le problème vient de la partie en rouge dans ma déclaration de données.....
 
Est-ce que qlqu'un est assez calé pour m'aider?
 
Merci d'avance,

mood
Publicité
Posté le 09-05-2005 à 13:35:24  profilanswer
 

n°1076314
AlainTech
Pas trouvé? Cherche encore!
Posté le 09-05-2005 à 14:11:09  profilanswer
 

Essaye:

ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range([C4], _
[G4].End(xlDown)), PlotBy:=xlColumns


Message édité par AlainTech le 09-05-2005 à 14:12:32

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1076332
Le_rameur
Posté le 09-05-2005 à 14:20:15  profilanswer
 

Merci de ta réponse
 
J'ai essayé ton code,
j'obtiens une erreur d'éxécution '424' (objet requis)
 
Aie! je ne sais pas du tt ce qui va pas...

n°1076385
AlainTech
Pas trouvé? Cherche encore!
Posté le 09-05-2005 à 14:50:19  profilanswer
 

Pour essayer d'isoler le problème, supprime, à la fin de ta ligne, la virgule et le PlotBy...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1076393
AlainTech
Pas trouvé? Cherche encore!
Posté le 09-05-2005 à 14:56:02  profilanswer
 

Autre méthode, plus "propre":

  Dim rChart as Range
  Set rChart = Range([C4],[G4].End(xlDown))  
  Charts.Add  
  ActiveChart.ChartType = xlLineMarkersStacked  
  ActiveChart.SetSourceData Source:=rChart, PlotBy:=xlColumns  
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphe1"


Message édité par AlainTech le 09-05-2005 à 14:56:29

---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1076421
Le_rameur
Posté le 09-05-2005 à 15:16:50  profilanswer
 

ta méthode est pas mal du tout ;-)
j'ai juste remplacé :
    ActiveChart.Location Where:=xlLocationAsObject,   Name:="Graphe1"
par
     ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
de manière que le graphe apparaît sur une nouvelle feuille.
 
Tu m'as bien aidé. Je voudrai pas abusé mais j'ai encore une question, avec ta méthode, mon graphe prend les données par lignes ce qui donne une multitude de courbe à la place d'obtenir une seule courbe.
Pour moi, cela vient de la définition abscisse & ordonnée (en abscisse: la colonne C4 & ordonnée: la colonne G4)
 
J'ai tenté de toucher au prgm que tu as rectifié mais ca marche pas
 
 Range("C4" ).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("G4" ).Activate
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
     
  Dim rChart As Range
  Set rChart = Range([C4], [G4].End(xlDown))
  Charts.Add
  ActiveChart.ChartType = xlLineMarkersStacked
  ActiveChart.SetSourceData Source:=rChart, PlotBy:=xlColumns
  ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
 
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
    End With
 
Est-ce que tu sais définir abscisse et ordonnée pr moi c du chinois
merci d'avance

n°1076570
AlainTech
Pas trouvé? Cherche encore!
Posté le 09-05-2005 à 16:18:09  profilanswer
 

Sorry, je n'ai pas de data à disposition pour un chart.
As-tu essayé de faire ton graphe en passant par l'assistant et en activant l'enregistreur de macro?
 
Par contre, pourquoi les 5 lignes audessus de Dim rChart as Range?


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1076649
Le_rameur
Posté le 09-05-2005 à 17:04:51  profilanswer
 

Oui excuse moi les 5 lignes sont totalement inutiles
en revanche g tjrs le même pb;
J'ai essayé de passer par l'enregistrement d'une macro, ce qui m'a permis d'établir la trame de cette partie du prgm, mais je suis obligé de retoucher le code de cette macro car, ma liste de données est modulable avec une autre macro (c une base de données).
 
J'ai fais une autre méthode mais g tjrs le même pb mon graphe ne prend pas en abscisse les données de la colonne C et en ordonnée les données de la colonne G:
il réagit comme ça
colonne D en fonction de colonne C
colonne E en fonction de colonne C
colonne F en fonction de colonne C
colonne G en fonction de colonne C
 
Dans la logique il devrait n'égliger D, E, F
 
le code que j'ai établi a également ce pb:
Dim DerniereLigne As Integer
'----------------------------------------------------------------------------
DerniereLigne = 4
 
    While Not (IsEmpty(Worksheets("electro usine" ).Cells(DerniereLigne + 1, 3)))
    DerniereLigne = DerniereLigne + 1
    Wend
     
    Range("C4" ).Select
    Range("G4" ).Activate
           
    Charts.Add
    ActiveChart.ChartType = xlLineMarkersStacked
    ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:C" & DerniereLigne, "G4:G" & DerniereLigne), PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
    End With
 
Peux-tu m'aider?
 
Ps:je débute en programmation (simplement pr satisfaire les exigences de mon patron...)

n°1076675
Le_rameur
Posté le 09-05-2005 à 17:33:18  profilanswer
 

J'ai trop besoin d'aide...
 

n°1077188
AlainTech
Pas trouvé? Cherche encore!
Posté le 10-05-2005 à 01:25:00  profilanswer
 

T'ai envoyé un MP...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
mood
Publicité
Posté le 10-05-2005 à 01:25:00  profilanswer
 

n°1077228
Le_rameur
Posté le 10-05-2005 à 09:11:04  profilanswer
 

Salut Alain,
 
g bien reçu ton mail, merci de te creuser la tête pr moi
Par contre je n'arrive pas du tout à le lire (impossible d'afficher cette page)
 
ps:je porte bien mon alias ;-)

n°1077243
AlainTech
Pas trouvé? Cherche encore!
Posté le 10-05-2005 à 09:26:51  profilanswer
 

Je te disais que, si tes données ne sont pas trop "sensibles", tu peux m'envoyer ton classeur à alain point gerard at tiscali point be.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1077253
Le_rameur
Posté le 10-05-2005 à 09:37:04  profilanswer
 

ok c sympas,
mais je peux vriament pas te les envoyer car c elles sont confidentielles (suivi environnemental d'1 indus. chimiq.)
je vais essayé un truc, et je te tiens au courant.
 
au pire des cas je t'envoie le fichier avec seulement la macro
 
merci encore Alain
A+

n°1077319
AlainTech
Pas trouvé? Cherche encore!
Posté le 10-05-2005 à 10:13:24  profilanswer
 

Ou des données bidons...
Tu peux changer les titres de colonnes et les valeurs.
 
Ce qui est important c'est que je comprenne la tête que ça doit avoir en finale.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1077355
Le_rameur
Posté le 10-05-2005 à 10:32:24  profilanswer
 

Bon après des heures de d'attente, de réflexion j'ai enfin trouvé:
j'ai contourné le pb en enregistrant une macro qui efface les courbes que je n'ai pas demandé ;-)
pourquoi je n'ai pas pensé +tot!
 
enfin un grand merci car sans toi je serai tjrs au même point. je te donne le prgm pour que tu comprennes ma logique qui est "illogique" mais bon, ça marche c le principal.
 
Dim DerniereLigne As Integer
'----------------------------------------------------------------------------
DerniereLigne = 4
 
    While Not (IsEmpty(Worksheets("electro usine" ).Cells(DerniereLigne + 1, 3)))
    DerniereLigne = DerniereLigne + 1
    Wend
     
    Range("C4" ).Select
    Range("G4" ).Activate
           
    Charts.Add
    ActiveChart.ChartType = xlLineMarkersStacked
    ActiveChart.SetSourceData Source:=Sheets("electro usine" ).Range("C4:C" & DerniereLigne, "G4:G" & DerniereLigne), PlotBy:=xlColumns
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graphe1"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Suivi des consommations groupe électrogène"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Mois"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Consommation"
    End With
     
    ActiveChart.Legend.Select
    ActiveChart.Legend.LegendEntries(1).LegendKey.Select
    Selection.Delete
    ActiveChart.Legend.Select
    ActiveChart.Legend.LegendEntries(1).LegendKey.Select
    Selection.Delete
    ActiveChart.Legend.Select
    ActiveChart.Legend.LegendEntries(1).LegendKey.Select
    Selection.Delete
    ActiveChart.Axes(xlValue).MajorGridlines.Select
    ActiveChart.ChartArea.Select
 
PS: tu as l'air de touché pas mal en VBA, si tu as le temps today, j'ai envoyé sur le forum un deuxième sujet concernant l'affichage d'un commentaire d'une cellule dans un textbox.
Donc si le coeur te dit... En espérant qu'1 jour je puisse répondre a une de tes questions (après 10 ans de prgm peut-être lol)
 


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

  besoin d'aide pour le code d'1 graphique

 

Sujets relatifs
Vos Méthodes pour faire une intégration graphique et mise en Page CSSProblème de positionnement de graphique
[RESOLU][C# .NET] Créer des objets Windows Form par le code sourceOuverture de fichier en interface graphique sous windows et linux
Demande de l'aide dans le domaine de la visionniquebesoin d'aide pour un projet
débutante en programmation cherche de l'aideProtéger son code source
Bug dans programme graphique 
Plus de sujets relatifs à : besoin d'aide pour le code d'1 graphique


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