IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

[EXCEL] Tracé de graphe


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Par défaut [EXCEL] Tracé de graphe
    Bonjour à tous,

    je me suis lancé dans la programmation d'une petite fonction en utilisant excel, ce qui est bien pratique lorsque l'on sait comment ça fonctionne!! sinon, c'est une vrai galère...

    Voila ce que je cherche à faire:
    -ouvrir mon fichier excel (non visible) ==> ok
    -créer un graphe ==> ok
    -afficher les points et tracer les axes ==> Pas OK

    ce que j'ai:
    Nom : cequej'ai.png
Affichages : 511
Taille : 26,0 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    procedure graph();
    var
      XL: variant;
        aFileName, aSheetName : AnsiString;
        vXLWorkbooks,vXLWorkbook, vUnused, vSeparator : variant;
        resultat, MaFeuille, CurrentSheet, DataSheet: Variant;
        MonGraph: _chart;
        XAxe, YAxe, ChartObject: variant;
     
    begin
        XL := CreateOLEObject('Excel.application');
        XL.Visible:= True;
     
        aFileName := 'C:\Users\pauld\Desktop\logfile_br1_2019_04_26';
        vUnused := unassigned;
        vSeparator := 4;
        vXLWorkbooks := XL.Workbooks;
        vXLWorkbook := vXLWorkbooks.Open(aFileName, vUnused, vUnused, vSeparator);
     
        resultat:=vXLWorkbook.Worksheets[1];
        resultat.chartobjects.add[10,10,100,100];
        resultat:=resultat.chartobjects[1].chart;
     
        XAxe:= vXLWorkbook.Worksheets[1].Range['C2','C8'];   //c'est a partir de la que ca bloque... comment définir les axes? et comment définir les plage de valeur? 
        YAxe:= vXLWorkbook.Worksheets[1].Range['E2','E8'];
        resultat.ChartType:=xlXYScatter;
     
        resultat.SetSourceData(YAxe, xlColumns);
        resultat.SeriesCollection.Add();
     
        resultat.SeriesCollection(1).XValues:=XAxe;
     
        resultat.SeriesCollection(1).Values:=YAxe;
    et voila ce que je souhaite:
    Nom : cequej'ai.png
Affichages : 515
Taille : 37,1 Ko


    Merci pour votre aide!

  2. #2
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 512
    Par défaut
    Bonjour,

    je pense que si tu changes ton ChartType de xlXYScatter en xlLineMarkers, le graphique devrait être bon

    A+
    Charly

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Par défaut
    Bonjour Charly,

    toujours le même problème .. Je ne sais pas pourquoi il creer cette zone rouge???

    Par contre je pars 2 semaines, donc je ne pourrais pas réagir a votre aide,

    Merci
    Parda

  4. #4
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 512
    Par défaut
    Chez moi en D7, avec ton code et ma modif, cela fonctionne (Sauf que le graphique est tout petit)

    A+
    Charly

  5. #5
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 512
    Par défaut
    Bonjour,

    pour ta rentrée de vacances (?) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    { ======================================================================= }
    // Uses   ... , ComObj,  Excel2000 ;
     
    procedure TForm2.Button5Click(Sender: TObject);
    Var
      XLApp : Variant;
      MonGraph  : Variant;
      n1, n2  : Integer ;  // Numéros des colonnes des données
      Nom : string ;  // Nom de la feuille
      XAxe, YAxe : Variant ;
     
    {  type_chart : array[0..10] of Cardinal =
                  ( xl3DPie,xl3DColumn,xlLine,xlLineMarkers ,xl3DPie , xlPie ,
                    xlXYScatter ,xl3DArea,xlArea ,xlDoughnut,xlRadar );  }
    begin
    // Si Excel est ouvert on le ferme
      if not VarIsEmpty(XLApp ) then
        begin
          XLApp.DisplayAlerts := CheckBox1.Checked ;  // Pas d'affichage de sauvegarde
          XLApp.quit;
          XLApp := unassigned;
        end;
    // Ouverture d'Excel
      if  VarIsEmpty(XLApp) then
        begin
          XLApp := CreateOLEObject('Excel.application');
          XLApp.Visible:=True
        end;
     
      // Ajout d'une feuille
      XLApp.Workbooks.Add ; //  [XLWBatWorksheet]
      // Nommage de la feuille
      XLApp.Workbooks[1].Worksheets[1].Name := 'Test Graphique' ;
     
      // Sélection de la feuille 1
      XLApp.Workbooks[1].Worksheets[1].select;
      Nom := XLApp.WorkBooks[1].WorkSheets[1].name;
      Form2.Caption := nom ;
     
      // Génération des données
      n1 := 2 ;  // Colonne B
      n2 := 4 ;   // Colonne D
      XlApp.cells[ 1 , n1] := '16:20:28' ; XlApp.cells[ 1 , n2] := '93' ;
      XlApp.cells[ 2 , n1] := '16:20:32' ; XlApp.cells[ 2 , n2] := '92' ;
      XlApp.cells[ 3 , n1] := '16:20:36' ; XlApp.cells[ 3 , n2] := '93' ;
      XlApp.cells[ 4 , n1] := '16:20:40' ; XlApp.cells[ 4 , n2] := '93' ;
      XlApp.cells[ 5 , n1] := '16:20:44' ; XlApp.cells[ 5 , n2] := '93' ;
      XlApp.cells[ 6 , n1] := '16:20:48' ; XlApp.cells[ 6 , n2] := '93' ;
      XlApp.cells[ 7 , n1] := '16:20:52' ; XlApp.cells[ 7 , n2] := '93' ;
      XlApp.cells[ 8 , n1] := '16:20:56' ; XlApp.cells[ 8 , n2] := '93' ;
      XlApp.cells[ 9 , n1] := '16:21:00' ; XlApp.cells[ 9 , n2] := '93' ;
      XlApp.cells[ 10 , n1] := '16:21:04' ; XlApp.cells[ 10 , n2] := '93' ;
      XlApp.cells[ 11 , n1] := '16:21:08' ; XlApp.cells[ 11 , n2] := '93' ;
      XlApp.cells[ 12 , n1] := '16:21:12' ; XlApp.cells[ 12 , n2] := '93' ;
      XlApp.cells[ 13 , n1] := '16:21:16' ; XlApp.cells[ 13 , n2] := '93' ;
      XlApp.cells[ 14 , n1] := '16:21:20' ; XlApp.cells[ 14 , n2] := '93' ;
     
      // Sélection des cellules pour le graphique
      XAxe:= XLApp.Range['B1','B14'];
      YAxe:= XLApp.Range['D1','D14'];
      XAxe.Select ;       // Si j'enlève cette ligne : plantage sur "MonGraph.HasTitle := true;" 
     
      // insertion du graphique
      MonGraph := XLApp.Sheets.Add(,,1,xlChart);
      // Type de graphique  :  xlLineMarkers
      MonGraph.ChartType:=  xlLineMarkers ;
      // Titre du graphique
      MonGraph.ChartArea.Select ;
      MonGraph.HasTitle := true;
      MonGraph.ChartTitle.CHARACTERS.TEXT := 'Essai de graphique' ;
      // Titre axes des X
      MonGraph.Axes(xlCategory, xlPrimary).HasTitle := True  ;
      MonGraph.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text := 'Heures'  ;
      // Titre Axes des Y
      MonGraph.Axes(xlValue, xlPrimary).HasTitle := True ;
      MonGraph.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text := 'Valeurs'  ;
     
      // Sélection des axes
      MonGraph.SetSourceData(XLApp.union(XAxe, YAxe),xlColumns);
      MonGraph.SeriesCollection(1).XValues:=XAxe;
      // Légende de la courbe
      MonGraph.SeriesCollection(1).Name := 'Courbe1' ;
      // Titre du graphique
      MonGraph.Location(xlLocationAsObject,'Test Graphique' );
      // Position du graphique sur la feuille
      XLApp.ActiveSheet.ChartObjects(1).Top  := 20;
      XLApp.ActiveSheet.ChartObjects(1).left := 300;
      //  Quitter Excel ?
      if MessageDlg('Fermeture d''Excel ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes Then
        begin
          if not VarIsEmpty(XLApp ) then
            begin
              XLApp.DisplayAlerts := CheckBox1.Checked ; 
              XLApp.quit;
              XLApp := unassigned;
            end;
        End ;
     
    end;
    Nom : Classeur.jpg
Affichages : 468
Taille : 146,2 Ko

    en D7, avec Excel2000

    A+
    Charly

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Par défaut
    Bonjour Charly,

    c'est ça, retour de vacance! ^^

    Un grand merci pour votre aide, ça m'a bien aidé. Mon problème devait venir du fait que j'ouvrais un classeur .csv... enfin, bref... ça fonctionne!

    Par contre, savez vous comment je pourrais récupérer ce graphe, pour le mettre dans ma form delphi!
    J'ai essayé d'adapter un code vba en delphi pour enregistrer le graphe en image, et l'importer ensuite dans ma forme, mais, ce n'est pas les même méthodes et je n'arrive pas à trouver de la doc sur ce point!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub GraphGif()
    Worksheets("feuil1").ChartObjects(1).Chart.Export Filename:="test.gif", FilterName:="GIF"
    End Sub
    merci

Discussions similaires

  1. [Graphique][2k] Plutôt Ms Excel ou Ms Graph 2000 ?
    Par soforever dans le forum IHM
    Réponses: 2
    Dernier message: 07/05/2007, 12h01
  2. [VBA][EXCEL] Copie de graphes entre 2 classeurs
    Par billynirvana dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/03/2007, 16h03
  3. Excel : "personnaliser" les graphs
    Par Sylvain11 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 27/04/2006, 15h58
  4. Choix d'un langage pour calculs et tracé de graphs
    Par quiscoul dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/03/2006, 08h46
  5. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo