graphique dans Excel à partir de données exportées

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

graphique dans Excel à partir de données exportées

Messagepar virginie » 13 Août 2003 à 15:31

Bonjour,J'ai un document Notes dans lequel j'ai un tableau avec 56 champs, 4 colonnes et 14 lignes.Je voudrais faire un export de la valeur de ces champs dans Excel(ca c'est bon), et ensuite faire quatre graphiques, un pour chaque colonne, chacun de ces graphiques représentant les valeurs des lignes.J'ai fouillé un peu dans ce forum et je suis arrivé au code suivant :(Declarations)'Déclaration des variables OLEDim vExcel As Variant ' variant contenant un objet de type ApplicationDim vNouveauClasseur As Variant 'contient une variable de type WorkbookDim vFeuilleActive As Variant 'variant contenant la feuille Excel WorksheetDim vXLLigne As Integer ' pointeur des lignes sous ExcelDim vXLCol As Integer ' pointeur des colonnes sous ExcelConst xlLocationAsObject = 2(initialize)Sub Initialize 'Cet agent crée un nouveau fichier Excel à chaque fois qu'il est lancé et génère l'exportation Call CreeFichierExcel( ) Call InitialiseTableauExcel() Call remplittableau() Call CreerGraphique1() Call CreerGraphique2() 'on sauve et on ferme Call vExcel.quit ( ) End Sub(creerfichierexcel)Sub CreeFichierExcel ( ) 'Cette procédure créé le fichier Excel 'On lance Excel et on le rend visible à l'écran (pour le mode debbug) Set vExcel = createObject ("Excel.Application") vExcel.visible = True 'on crée un nouveau fichier excel Set vNouveauClasseur = vExcel.Workbooks.Add( ) 'on récupère la feuille active : Feuil1 Set vFeuilleActive = vExcel.ActiveSheet 'on sauvegarde sur disque le fichier excel (sous c:) Call vNouveauClasseur.SaveAs("c:\user\U135097\fichier1.xls") End Sub(initialisetableauexcel)(fonctionne je ne l'écris pas car trop long....)(remplitTableau)(fonctionne également...)(CréerGraphique1)Public Sub CreerGraphique1() Dim XLGraphiqueMVS As Variant vExcel.Range("C3:C14").Select Set XLGraphique1 = vExcel .Charts.Add With XLGraphique1.ApplyCustomType .ChartType = 21 .TypeName = "Courbe avec lissage" End With With XLGraphique1.Location .Where = xlLocationAsObject .Name = "Feuil1" End With End Sub(CréerGraphique2)Public Sub CreerGraphique2() Dim XLGraphique2 As Variant vExcel.Range("D3:D14").Select Set XLGraphique2 = vExcel .Charts.Add With XLGraphique2.ApplyCustomType .ChartType = 21 .TypeName = "Courbe avec lissage" End With With XLGraphique2.Location .Where = 2 .Name = "Feuil1" End With End Subà l'éxécution de l'agent, excel s'ouvre, nouveau classeur, tableau remplit avec les bonnes valeurs sur la feuille1 qui est en deuxième position mais je n'ai qu'un graphique qui correspond à CréerGraphique1.Les cellules sélectionnées sont celles de CréerGraphique1.Apparemment, il ne sélectionne pas celles de CréerGraphique2.Je vous avoue que j'ai repris ce code et que je suis loin de tout comprendre.Merci pour vos futures réponses.
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 14 Août 2003 à 15:49

pas une petite idée comme ca non?
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar polo » 19 Août 2003 à 09:55

Désolé, je ne peux pas t'aider, mais ton code m'interresse énormément.Pourrais-tu me dire comment est-ce qu'on ajoute une feuille dans un fichier.et est-il possible de modifier les couleurs et bordures des cellules ???
polo
 

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 10:42

Bonjour, et bien non je n'en sais rienJ'ai repris le code en faisant une sorte de mélange entre les formations LotusScript et les messages de ce forum.
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar polo » 19 Août 2003 à 10:47

Pour la mise en page du fichier, j'ai trouvé pas mal d'info ds l'aide de VB.Ce qui me géne c qu'à chaque export il ouvre Excel; en fait, je voudrais qu'il enregistre le fichier sur le disque et ensuite qu'il l'associe à un document Notes....
polo
 

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 10:48

D'ailleurs si quelqu'un connaît un site, ou une documentation sur le pilotage d'Excel depuis notes, cela m'intéresserait beaucoup.Merci.
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar Stephane Maillard » 19 Août 2003 à 10:51

Bonjour,Voici quelques fonctions :Dim XL As VariantConst xl3DArea = -4098Const xl3DAreaStacked = 78Const xl3DAreaStacked100 = 79Const xl3DBarClustered = 60Const xl3DBarStacked = 61Const xl3DBarStacked100 = 62Const xl3DColumn = -4100Const xl3DColumnClustered = 54Const xl3DColumnStacked = 55Const xl3DColumnStacked100 = 56Const xl3DLine = -4101Const xl3DPie = -4102Const xl3DPieExploded = 70Const xlArea = 1Const xlAreaStacked = 76 Const xlAreaStacked100 = 77Const xlBarClustered = 57Const xlBarOfPie = 71Const xlBarStacked = 58Const xlBarStacked100 = 59Const xlBubble = 15Const xlBubble3DEffect = 87Const xlColumnClustered = 51Const xlColumnStacked = 52Const xlColumnStacked100 = 53Const xlConeBarClustered = 102Const xlConeBarStacked = 103 Const xlConeBarStacked100 = 104Const xlConeCol = 105 Const xlConeColClustered = 99 Const xlConeColStacked = 100Const xlConeColStacked100 = 101Const xlCylinderBarClustered = 95 Const xlCylinderBarStacked = 96Const xlCylinderBarStacked100 = 97Const xlCylinderCol = 98Const xlCylinderColClustered = 92Const xlCylinderColStacked = 93Const xlCylinderColStacked100 = 94Const xlDoughnut = -4120Const xlDoughnutExploded = 80 Const xlLine = 4Const xlLineMarkers = 65Const xlLineMarkersStacked = 66Const xlLineMarkersStacked100 = 67Const xlLineStacked = 63 Const xlLineStacked100 = 64Const xlPie = 5Const xlPieExploded = 69Const xlPieOfPie = 68 Const xlPyramidBarClustered = 109Const xlPyramidBarStacked = 110Const xlPyramidBarStacked100 = 111Const xlPyramidCol = 112Const xlPyramidColClustered = 106Const xlPyramidColStacked = 107Const xlPyramidColStacked100 = 108Const xlRadar = -4151Const xlRadarFilled = 82 Const xlRadarMarkers = 81Const xlStockHLC = 88Const xlStockOHLC = 89Const xlStockVHLC = 90Const xlStockVOHLC = 91Const xlSurface = 83Const xlSurfaceTopView = 85Const xlSurfaceTopViewWireframe = 86 Const xlSurfaceWireframe = 84 Const xlXYScatter = -4169Const xlXYScatterLines = 74Const xlXYScatterLinesNoMarkers = 75Const xlXYScatterSmooth = 72Const xlXYScatterSmoothNoMarkers = 73Const xlLocationAsObject = 2Const xlBuiltIn = 21Sub Initialize lanceexcel creergraphiqueEnd SubPublic Sub LanceExcel() Set XL = CreateObject("Excel.Application")End SubPublic Sub NouveauClasseur() Set XL = CreateObject("Excel.Sheet") XL.Application.Visible = True ' Rend Excel visible XL.ActiveSheet.Cells(1, 1).Value = "Bonjours" XL.SaveAs Filename="C:\Test.xls"End SubPublic Sub CreerGraphique() Dim XLGraphique As Variant XL.Workbooks.Add XL.Range("A1").Value = 3 XL.Range("A2").Value = 2 XL.Range("A1:A2").Select%REM Set XLGraphique = XL.Charts.Add XLGraphique.ChartType = xl3DArea XL.Visible = True%END REM Set XLGraphique = XL.Charts.Add With XLGraphique.ApplyCustomType .ChartType = xlBuiltIn .TypeName = "Courbe avec lissage" End With With XLGraphique.Location .Where = xlLocationAsObject .Name = "Feuil1" End With XL.Visible = TrueEnd SubPublic Sub ExcecuteMacro() 'Macro Excel : 'sub ChangementValeur() ' for each c in worksheets("sheet1").range("A1:D10") ' c.value = rnd() * 100 ' next c 'end sub Set XL = GetObject("C:\Test.xls", "excel.sheet") ' Rend Excel visible XL.Application.Visible = True ' Rend le classeur (Workbook) visible XL.Application.Windows("Test.xls").Visible = True XL.Application.Run "ChangementValeur"End SubPublic Sub QuitteExcel() XL.Quit ' Ferme Excel Set XL = Nothing ' Libère la variable objetEnd Sub[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: graphique dans Excel à partir de données exportées

Messagepar Stephane Maillard » 19 Août 2003 à 11:00

Bonjour,Vous êtes sur que Graphique2 n'est pas derrière Graphique1 ?[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 11:07

Merci de vos réponses.j'ai :1ere feuille : Graph12eme feuille : (feuil1) les données exportées3eme feuille : (feuil2) rien4eme feuille : (feuil3) rienaprès ouverture d'excel, exportation des données et graphique, j'ai l'erreur notes "Automation object member not found"
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar Stephane Maillard » 19 Août 2003 à 11:57

Bonjour,En regardant de plus près le code j'ai remarqué une erreur de déclaration.Dim XLGraphiqueMVS As Variant ==> Vous déclarez ceciSet XLGraphique1 = vExcel .Charts.Add ==> Et la vous travaillez avec XLGraphique1Est ce normal ?[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 12:43

non j'ai partout XLGraphiqueMVS, j'avais enlevé le MVS et j'ai mis 1 dans le message pour ne pas vous embrouiller...en fait , quand je lance le code, les valeurs sélectionnées(par "la souris") dans Excel correspondent à C3:C14 donc à CréerGraphique1 et celles de CréerGraphique2, D3:D14 ne sont pas sélectionnées....ne faut-il pas, dans le code, déselectionner les cellules du premier graphique?D'autre part, l'erreur "automation object member not found" se situe à la ligne : With XLGraphiqueMVS.ApplyCustomTypede CréerGraphique1.
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar Stephane Maillard » 19 Août 2003 à 12:55

Bonjour,Je viens réécrire les deux graphiques avec un bonus pour placer les graphiques ou vous voulez dans la feuille en cours. Je viens de tester sur mon poste.Dim vExcel As Variant ' variant contenant un objet de type ApplicationDim vNouveauClasseur As Variant 'contient une variable de type WorkbookDim vFeuilleActive As Variant 'variant contenant la feuille Excel WorksheetDim vXLLigne As Integer ' pointeur des lignes sous ExcelDim vXLCol As Integer ' pointeur des colonnes sous ExcelDim NomFeuille As String '<== Ne pas oublier de l'ajouter dans vos déclarationsSub Initialize'Cet agent crée un nouveau fichier Excel à chaque fois qu'il est lancé et génère l'exportation Call CreeFichierExcel( )' Call InitialiseTableauExcel()' Call remplittableau() Call CreerGraphique1() Call CreerGraphique2() 'on sauve et on ferme Call vExcel.quit ( ) End SubSub CreeFichierExcel ( )'Cette procédure créé le fichier Excel 'On lance Excel et on le rend visible à l'écran (pour le mode debbug) Set vExcel = createObject ("Excel.Application") vExcel.visible = True 'on crée un nouveau fichier excel Set vNouveauClasseur = vExcel.Workbooks.Add( ) 'on récupère la feuille active : Feuil1 Set vFeuilleActive = vExcel.ActiveSheet NomFeuille = vFeuilleActive.Name '<== Ne pas oublier de l'ajouter'on sauvegarde sur disque le fichier excel (sous c:) Call vNouveauClasseur.SaveAs("c:\Faux.xls") End SubPublic Sub CreerGraphique1() Dim XLGraphique1 As Variant vExcel.Range("C3:C14").Select Set XLGraphique1 = vExcel .Charts.Add XLGraphique1.ApplyCustomType 21, "Courbe avec lissage" XLGraphique1.Location 2, NomFeuille PlaceGraphique NomFeuille, 1, "A", 15End SubPublic Sub CreerGraphique2() Dim XLGraphique2 As Variant vExcel.Range("D3:D14").Select Set XLGraphique2 = vExcel .Charts.Add XLGraphique2.ApplyCustomType 21, "Courbe avec lissage" XLGraphique2.Location 2, NomFeuille PlaceGraphique NomFeuille, 2, "F", 15End SubPublic Sub PlaceGraphique(s_Feuille As String, l_NumeroGraphique As Long, s_Colonne As String, i_Ligne As Integer) With vExcel.Application.Worksheets(NomFeuille) .ChartObjects(l_NumeroGraphique).Top = .Rows(i_Ligne).Top .Range("A1").Select .ChartObjects(l_NumeroGraphique).Left = .Columns(s_Colonne).Left End WithEnd Sub'--Fin codeRoutine PlaceGraphique :s_Feuille (String) : Nom de la feuile ou doit être placer le graphiquel_NumeroGraphique (Long) : Numéro du graphique, par défaut le premier est 1 et qaund vous ajouté un graphique il incrémenté de 1.S_Colonne (String) : La colonne ou vas ce situer le bord gauche du graphiquei_Ligne (Integer) : Numéro de la ligne ou va ce situer le haut du graphique[%sig%]
Cordialement

Stéphane Maillard
Avatar de l’utilisateur
Stephane Maillard
Lord of DominoArea
Lord of DominoArea
 
Message(s) : 8695
Inscrit(e) le : 16 Déc 2004 à 01:10
Localisation : Bretagne

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 13:08

je v regarder camerci bien!
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 13:26

magnifique !superbe!merci !!une dernière petite chose pour que ce soit parfait : je sais comment mettre en gras une cellule :Sub InitialiseTableauExcel ( ) 'Procédure permettant de paramétrer l'ergonomie initiale du tableau vXLLigne = 2 vXLCol = 2 'on remplit les titres des colonnes vFeuilleActive.Cells(vXLLigne , vXLCol + 1).value = "MVS" ........ 'on met en gras les titres des colonnes vFeuilleActive.Cells(vXLLigne , vXLCol + 1).font.bold = True End Subcomment faire pour entourer les cellules de la première ligne du tableau, c'est à dire pour mettre une bordure ?encore merci!
virginie
 

Re: graphique dans Excel à partir de données exportées

Messagepar virginie » 19 Août 2003 à 13:28

est-il possible de mettre un titre aux graphiques aussi?
virginie
 

Suivant

Retour vers Développement

cron