Page 1 sur 1

marco excel

MessagePublié: 28 Mai 2003 à 16:13
par leila
Comment peut-on lancer une macro excel a partir de Notes et script

Re: marco excel

MessagePublié: 28 Mai 2003 à 16:33
par Raziel
Essaie ceci :J'ai un fichier Tarifs2003.xls contenant plusieurs macro. Je veux exécuter la macro nommé "Macro1"Sub InitializeDim xlsObject As VariantDim xlsWorkBook As Variant Set xlsObject = CreateObject( "Excel.Application" )Set xlsWorkBook = OpenXlsFile ("c:\temp\Tarifs2003.xls", xlsObject)xlsObject.Visible = True xlsObject.Run "Tarifs2003.xls!Macro1"End SubFunction OpenXlsFile (Path As String, xlsObject As Variant) As VariantxlsObject.Workbooks.Open PathSet OpenXlsFile = xlsObject.ActiveWorkbookEnd Function

Re: marco excel

MessagePublié: 03 Juin 2003 à 16:20
par leila
Probleme probleme et probleme!Lorsque j'exporte des données sur un fichier excel (contenant déja des donnees), je ne peux plus modifier qqchose dessus car celui ci devient un fichier en lecture seule.... Je sais pas pourquoiDe plus, qd j'essaie de lancer une macro excel depuis Notes en utilisant la syntaxe que vous m'avez donné...... L'erreur se pointe!!!!!!!!!!!!!!!!!!!je ne peux pas lancer une macro sur un fichier en lecture seule! donc je ne sais pas comment je vais faire pour régler ce probleme!!!!

Re: marco excel

MessagePublié: 03 Juin 2003 à 16:47
par Raziel
Le pb du lancement de la macro vient effectivement du fait que le doc est en lecture seule (le code que je t'ai donné fonctionne : je l'ai testé avant de te l'envoyé).La question maintenant est de savoir pk ce fichier est en lecture ? N'y aurais t'il pas une personne ou un traitement qui tiendrai le fichier ? Vérifie les options du fichier.

Re: marco excel

MessagePublié: 03 Juin 2003 à 18:02
par Stephane Maillard
Bonjour,Est ce que dans votre code vous supprimer les références au fichier ?Il est fort possible que quand vous sorté de votre routine le fichier est toujours ouvert par le programme, ce qui fait votre classeur est toujours considéré comme ouvert par un application tierse.[%sig%]

Re: marco excel

MessagePublié: 04 Juin 2003 à 08:24
par leila
J'arrive pas tres bien a comprendre ce qu'il faut faire, donc pour simplifier je vous envoie mon code, comme ca vous allez etre plus concret et je comprendrai mieux.... Voila Set db=Session.CurrentDatabase Set view= db.Getview("test") Set xlsObject = CreateObject( "Excel.Application" ) ' Ouverture du fichier. En retour, on récupère le classeur Set xlsWorkBook = OpenXlsFile ("C:\testeur.xls", xlsObject) xlsObject.Visible = False ' Récupération de la feuille data Set xlsSheet = xlsWorkbook.Worksheets("Data") ' initialisation de la collection de documents selectionnes Set collection = db.unprocessedDocuments ' On se place sur le premier document père Set doc = collection.GetFirstDocument ' Calcul du nombre de documents selectionnés par l'utilisateur nbdoc% = collection.count Redim ListeNom(nbdoc%) As String ' initialisation de l'indice Ligne a 2 car la premiere ligne est reservée aux noms de colonnes excel... Ligne = 2 Do While Not (doc Is Nothing) ' extraire les valeurs pour un document donné maxcols = 20 For i = 1 To maxcols ' V = doc. GetItemValue ( tCol(i) )( 0 ) xlsSheet.cells(Ligne, i).Value = doc.GetItemValue( tCol(i) ) (0) Next i Set doc = collection.GetNextDocument (doc) Ligne = Ligne + 1 i = i + 1 Loop' sauvegarde du classeur sous un autre nom xlsWorkbook.SaveAs "C:\testEssai4.xls" ' Lancement de la macro pour harminoser le resultat xlsObject.Run "testeur.xls!Macro"End SubJ'ai pas mis les declarations..... a mon avis le probleme de vient pas de celles-ci.Alors qu'est ce qui ne va pas??? ou est le probleme? pourquoi mon fichier se met en lecture seule sous excel et on ne peut pas lancer la macro????Merci de bien vouloir me répondre!!

Re: marco excel

MessagePublié: 04 Juin 2003 à 08:45
par Raziel
Lorsque tu lance ton code pour la toute 1ere fois, est ce que le fichier est en lecture ou en modification ?A la lecture de ton code, il y a une petite chose qui m'intrigre : a aucun moment tu ne fait un visible = true (ce qui n'est pas obligatoire, je te l'accorde, mais dans ce cas tu dois absolument, à la fin de ton code, libéré l'objet Excel est donc le fichier).Ce qui se passe c'est qu'à la fin de l'éxécution de ton code, l'objet et donc le fichier est tjs tenu. Conséqunce, lorsque tu tente d'y accéder de nouveau, le fichier se met en lecture

Re: marco excel

MessagePublié: 04 Juin 2003 à 08:56
par leila
Oula, c trop compliqué tout ca! au départ qd je lance le programme mon fichier est en modification ou non, je vais etre plus claire! en fait, je commence par créer un nouveau fichier et j'ai tous les droits dessus lorsque je lance le programme. Il se trouve ke apres avoir transmis les donnees sur le fichier, je l'enregistre et la macro (ligne de code suivante) n'est pas executée... pourkoi? il faut faire koi? comment?Je suis un peu perdu la.

Re: marco excel

MessagePublié: 04 Juin 2003 à 09:38
par Stephane Maillard
Bonjour,Essayez de séparé chaque fonction :Public Sub LanceExcel() Dim XL As Excel.Application Set XL = CreateObject("Excel.Application") XL.Visible = True XL.Workbooks.Add 'XL.Quit ' Ferme Excel 'Set XL = Nothing ' Libère la variable objetEnd SubPublic Sub NouveauClasseur() Dim XL As Excel.Workbook Set XL = CreateObject("Excel.Sheet") XL.Application.Visible = True ' Rend Excel visible XL.ActiveSheet.Cells(1, 1).Value = "Bonjours Iris Média" XL.SaveAs Filename:="C:\Test.xls"End SubPublic Sub CreerGraphique() Dim XL As New Excel.Application Dim XLGraphique As Excel.Chart XL.Visible = True XL.Workbooks.Add XL.Range("A1").Value = 3 XL.Range("A2").Value = 2 XL.Range("A1:A2").Select Set XLGraphique = XL.Charts.Add XLGraphique.Type = xl3DColumn ' Bibliothèque de référence ' pour la valeurEnd SubPublic Sub ExcecuteMacro() 'Macro Excel : 'sub ChangementValeur() ' for each c in worksheets("sheet1").range("A1:D10") ' c.value = rnd() * 100 ' next c 'end sub Dim XL As Excel.Workbook 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 SubA testé.[%sig%]

Re: marco excel

MessagePublié: 11 Juin 2003 à 14:06
par leila
bonjour Raziel,j'ai testé le code que vous m'aivez donné, maintenant ce n'est plus le probleme des droits d'accès de fichiers.... La macro n'est pas lancé a partir de Notes..... pourquoi?le fichier est peut etre introuvable!