Page 1 sur 1

Création de graphiques

MessagePublié: 26 Mai 2003 à 15:11
par Bonoboo
Je souhaiterai créer un graphique sous excel à partir de valeurs contenues dan sdes vues Lotus Notes.J'ai fait quelques essais mais je n'arrive pas à trouver le bon script.Est-ce que quelqu'un pourrait m'indiquer comment y parvenir ?

Re: Création de graphiques

MessagePublié: 26 Mai 2003 à 15:53
par Raziel
Petite infos...Tu lance l'enregistreur de macro, tu exécute les différentes commandes que doivent faire ton script et tu regardes le code généré. Il te suffit allors d'apporter quelques modif pourque cela fonctionne sous notes.

Re: Création de graphiques

MessagePublié: 26 Mai 2003 à 16:11
par Bonoboo
J'ai déja lancé l'éditeur de Macro. Aprés quelques modif, j'ai généré le code lotusscript suivant.Pour que ce soit plus simple, j'ai choisi d'ouvrir un fichier excel déjà existant.Après cela je souhaite donc créer le graphique.Ca me fait un script comme ca :Sub Click(Source As Button) Dim Session As New NotesSession Dim db As NotesDatabase Dim sourceview As NotesView Dim sourcedoc As NotesDocument Dim dataview As NotesView Dim dc As NotesDocumentCollection Dim datadoc As NotesDocument Dim maxcols As Integer Dim WS As New Notesuiworkspace Dim ViewString As String Dim Scope As String Dim GetField As Variant Dim C As NotesViewColumn Dim FieldName As String Dim K As Integer Dim N As Integer Dim xlApp As Variant Dim xlsheet As Variant Dim rows As Integer Dim cols As Integer Dim nitem As NotesItem Dim entry As NotesViewEntry Dim vwNav As NotesViewNavigator Dim ShowView() As Variant Dim i As Integer Dim VList As Variant Dim ColVals As Variant %REMvariables pour le nom d'export%END REM Dim nomFichier As String Dim repertoire As String Dim file As Variant Dim nomComplet As String Dim xlsWorkBook As Variant Dim graph As Variant nomComplet="c:\Documents and Settings\frsk840\My Documents\Enquete Satisfaction\Classeur1.xls" Set xlApp = CreateObject("Excel.Application") xlApp.StatusBar = "Ouverture du fichier en cours. Veuillez patienter..." Set xlsWorkBook = OpenXlsFile (nomComplet, xlApp) xlApp.StatusBar = "Création du tableau. Veuillez patienter..." xlApp.Visible = True xlApp.ReferenceStyle = 1 Set xlsheet = xlsWorkbook.ActiveSheet %REMdébut script pour la création des graphiques%END REM xlApp.Range("B2:H2,B6:H6").Select xlApp.Range("B6").Activate Set graph=xlsheet.ChartObjects(1).Add() graph.ChartType=xlColumnClustered graph.SetSourceData(xlsheet.Range("B1:I1,B6:I6")) graph.SeriesCollection(1).Name="Résultat Global" graph.Location(xlLocationAsObject) With graph .HasTitle=False .ChartTitle.Characters.Text="Moyenne Globale" .Axes(xlCategory,xlPrimary).HasTitle=False .Axes(xlValue,xlPrimary).HasTitle=False End With xlApp.Range("A1").Select xlApp.StatusBar = "L'importation des données de Lotus Notes est terminée" dataview.clear Set xlapp=Nothing Set db=Nothing End SubFunction OpenXlsFile(Path As String, xlsObject As Variant) As Variant xlsObject.Workbooks.Open Path Set OpenXlsFile = xlsObject.ActiveWorkbookEnd Functionsi quelqu'un peut me dire les modifs a apporter... je suis preneur. Mon erreur est générée à la ligne set graph=...Merci beaucoup

Re: Création de graphiques

MessagePublié: 26 Mai 2003 à 17:04
par Raziel
Tiens, essaie ce petit bout de code.J'ai un fichier excel contenant plusieurs onglets. J'active la feuille nommé "Feuil1" et fait une sélection de cellule. Ensuite je génère le graphnomComplet="c:\temp\Tarifs2003.xls"Set xlApp = CreateObject("Excel.Application") xlApp.StatusBar = "Ouverture du fichier en cours. Veuillez patienter..." Set xlsWorkBook = OpenXlsFile (nomComplet, xlApp)xlApp.StatusBar = "Création du tableau. Veuillez patienter..."xlApp.Visible = TruexlApp.ReferenceStyle = 1 Set xlsheet = xlApp.Application.Sheets("Feuil1")xlsheet.Range("B2:H6").Select Set Graph = xlsWorkBook.Charts.AddSet Graph = xlsWorkBook.ActiveChartGraph.ChartType = 51 Graph.SetSourceData xlApp.Application.Sheets("Feuil1").Range("B2:H6") Graph.Location 2, "Feuil1" xlApp.StatusBar = "L'importation des données de Lotus Notes est terminée" Set xlapp=NothingSet db=Nothing

Re: Création de graphiques

MessagePublié: 27 Mai 2003 à 08:18
par Bonoboo
Merci beaucoup !J'ai essayé le code en le modifiant pour réaliser un graph par rapport à mes données et c'est nickel.Maintenant, j'ai juste un autre petit problème. Quand je veux prendre des valeurs depuis une vue lotus vers un fichier excel pour pouvoir ensuite générer un graphe, ca me met des cotes devant les chiffres dans les cellules. Cad au lieu de mettre 5, ca met '5.Aurais-tu une idée de code pour éviter ces choses la ?

Re: Création de graphiques

MessagePublié: 27 Mai 2003 à 08:37
par Raziel
Je ne comprends pas d'ou peuvent venir les ''Je fais ce genre de traitement et je n'ai pas ce pbEx :xlApp.Application.Sheets("Feuil1").Cells(2,1).Value = "1"xlApp.Application.Sheets("Feuil1").Cells(2,2).Value = 1me donne une entrée de type texte du coté d'excel (ce qui ne bloque pas la génération du graph).Pourrais tu nous en dire plus sur ton code d'extraction et notamment la ligne qui te génère des '' pour les données numériques ?

Re: Création de graphiques

MessagePublié: 27 Mai 2003 à 09:43
par Bonoboo
En fait j'ai trouvé une erreur dans mon code.Il y avait un problème lorsque je recopiais les données. Au début j'avais réalisé deux cas en fonction du type de la valeur : String ou autre.Après avoir changé le code et sans les différencier, ca marche.Merci beaucoup pour tes conseils éclairés !AmicalementAnnexe:pour les gens qui auraient le meme problemeAncien code :Set entry=vwnav.GetFirstDocument rows=3 Do While Not (entry Is Nothing) For cols=1 To maxcols colvals=entry.ColumnValues(cols-1) scope=Typename(colvals) Select Case scope Case "STRING" xlsheet.Cells(rows,cols).Value ="'" + colvals Case Else xlsheet.Cells(rows,cols).Value = colvals End Select Next colsrows=rows+1Set entry = vwnav.getnextdocument(entry)LoopNouveau Code :Set entry=vwnav.GetFirstDocumentrows=3Do While Not (entry Is Nothing)For cols=1 To maxcols colvals=entry.ColumnValues(cols-1)xlsheet.Cells(rows,cols).Value =colvals End SelectNext colsrows=rows+1Set entry = vwnav.getnextdocument(entry)Loop