marco excel

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

marco excel

Messagepar leila » 28 Mai 2003 à 16:13

Comment peut-on lancer une macro excel a partir de Notes et script
leila
 

Re: marco excel

Messagepar Raziel » 28 Mai 2003 à 16:33

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: marco excel

Messagepar leila » 03 Juin 2003 à 16:20

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!!!!
leila
 

Re: marco excel

Messagepar Raziel » 03 Juin 2003 à 16:47

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.
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: marco excel

Messagepar Stephane Maillard » 03 Juin 2003 à 18:02

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%]
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: marco excel

Messagepar leila » 04 Juin 2003 à 08:24

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!!
leila
 

Re: marco excel

Messagepar Raziel » 04 Juin 2003 à 08:45

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
Raziel

L'administration est un lieu ou les gens qui arrivent en retard croisent dans l'escalier ceux qui partent en avance. [Georges Courteline]
Avatar de l’utilisateur
Raziel
Modérateur
Modérateur
 
Message(s) : 1795
Inscrit(e) le : 21 Déc 2004 à 11:06
Localisation : Roubaix

Re: marco excel

Messagepar leila » 04 Juin 2003 à 08:56

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.
leila
 

Re: marco excel

Messagepar Stephane Maillard » 04 Juin 2003 à 09:38

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%]
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: marco excel

Messagepar leila » 11 Juin 2003 à 14:06

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!
leila
 


Retour vers Développement