Utilisation d'une instance excel à partir de Project
11 réponses
Anne
Bonjour,
Dans des macros VBA sous MS Project, je cherche =E0 lire des donn=E9es
dans un classeur excel.
A l'aide de diff=E9rents messages d=E9j=E0 post=E9s sur ce sujet, j'ai pu
=E9crire des lignes de code qui fonctionnent tr=E8s bien chez moi.
Exemple :
Set xlApp =3D CreateObject("Excel.Application")
xlApp.Workbooks.Open ActiveProject.Path &
"\Param=E8tres_essais.xls", _
ReadOnly:=3DTrue
etc...
Malheureusement, lorsque je copie ces macros chez les autres
utilisateurs, il y a erreur : a priori, il faut d=E9finir tous les
param=E8tres Excel.
J'ai ajout=E9 la commande dim xlApp as Excel.Application, mais cela ne
fonctionne pas. Dim xlApp as Object semble marcher. J'ai d=E9j=E0 du mal
=E0 comprendre...
Ensuite, il faut apparemment que je d=E9finisse toutes les commandes
excel du type xlToRight, xlDown, etc.
Est-ce normal? Comment les d=E9finir?
Je dois admettre que je ne suis pas sur de ce qui est exactement ton pb. Chez chaque utilisateur il faut passer en VBE, et dans Tools, References, cocher Micrososft Excel. Malheureusement il est très diffiile d'automatiser cela, mieux vaut (demander de) le faire à la main.
Après cela les constantes Excel sont connues dans VBA Project. Bien à toi,
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Bonjour,
Dans des macros VBA sous MS Project, je cherche à lire des données dans un classeur excel. A l'aide de différents messages déjà postés sur ce sujet, j'ai pu écrire des lignes de code qui fonctionnent très bien chez moi. Exemple : Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open ActiveProject.Path & "Paramètres_essais.xls", _ ReadOnly:=True etc... Malheureusement, lorsque je copie ces macros chez les autres utilisateurs, il y a erreur : a priori, il faut définir tous les paramètres Excel. J'ai ajouté la commande dim xlApp as Excel.Application, mais cela ne fonctionne pas. Dim xlApp as Object semble marcher. J'ai déjà du mal à comprendre... Ensuite, il faut apparemment que je définisse toutes les commandes excel du type xlToRight, xlDown, etc. Est-ce normal? Comment les définir?
Merci d'avance!
Bonjour Anne,
Je dois admettre que je ne suis pas sur de ce qui est exactement ton pb.
Chez chaque utilisateur il faut passer en VBE, et dans Tools, References,
cocher Micrososft Excel.
Malheureusement il est très diffiile d'automatiser cela, mieux vaut
(demander de) le faire à la main.
Après cela les constantes Excel sont connues dans VBA Project.
Bien à toi,
--
Jan De Messemaeker, Microsoft Project Most Valuable Professional
http://users.online.be/prom-ade/
For FAQs: http://www.mvps.org/project/faqs.htm
"Anne" <anne.doctobre@wanadoo.fr> schreef in bericht
news:1141296246.969463.247210@j33g2000cwa.googlegroups.com...
Bonjour,
Dans des macros VBA sous MS Project, je cherche à lire des données
dans un classeur excel.
A l'aide de différents messages déjà postés sur ce sujet, j'ai pu
écrire des lignes de code qui fonctionnent très bien chez moi.
Exemple :
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open ActiveProject.Path &
"Paramètres_essais.xls", _
ReadOnly:=True
etc...
Malheureusement, lorsque je copie ces macros chez les autres
utilisateurs, il y a erreur : a priori, il faut définir tous les
paramètres Excel.
J'ai ajouté la commande dim xlApp as Excel.Application, mais cela ne
fonctionne pas. Dim xlApp as Object semble marcher. J'ai déjà du mal
à comprendre...
Ensuite, il faut apparemment que je définisse toutes les commandes
excel du type xlToRight, xlDown, etc.
Est-ce normal? Comment les définir?
Je dois admettre que je ne suis pas sur de ce qui est exactement ton pb. Chez chaque utilisateur il faut passer en VBE, et dans Tools, References, cocher Micrososft Excel. Malheureusement il est très diffiile d'automatiser cela, mieux vaut (demander de) le faire à la main.
Après cela les constantes Excel sont connues dans VBA Project. Bien à toi,
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Bonjour,
Dans des macros VBA sous MS Project, je cherche à lire des données dans un classeur excel. A l'aide de différents messages déjà postés sur ce sujet, j'ai pu écrire des lignes de code qui fonctionnent très bien chez moi. Exemple : Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open ActiveProject.Path & "Paramètres_essais.xls", _ ReadOnly:=True etc... Malheureusement, lorsque je copie ces macros chez les autres utilisateurs, il y a erreur : a priori, il faut définir tous les paramètres Excel. J'ai ajouté la commande dim xlApp as Excel.Application, mais cela ne fonctionne pas. Dim xlApp as Object semble marcher. J'ai déjà du mal à comprendre... Ensuite, il faut apparemment que je définisse toutes les commandes excel du type xlToRight, xlDown, etc. Est-ce normal? Comment les définir?
Merci d'avance!
Anne
Merci Jan, je crois que ta réponse me résoud partiellement mon problème. J'avais complètement oublié cette histoire de référence à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le dim... Sur les autres postes, ça ne fonctionne pas, il faut que je définisse l'objet xlApp. Si je définis par : dim xlApp as Excel.Application, le type n'est pas reconnu.
Merci Jan, je crois que ta réponse me résoud partiellement mon
problème. J'avais complètement oublié cette histoire de référence
à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit
uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le
dim... Sur les autres postes, ça ne fonctionne pas, il faut que je
définisse l'objet xlApp. Si je définis par :
dim xlApp as Excel.Application, le type n'est pas reconnu.
Merci Jan, je crois que ta réponse me résoud partiellement mon problème. J'avais complètement oublié cette histoire de référence à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le dim... Sur les autres postes, ça ne fonctionne pas, il faut que je définisse l'objet xlApp. Si je définis par : dim xlApp as Excel.Application, le type n'est pas reconnu.
Jan De Messemaeker
Bonjour Anne,
Il y a une option en VB Editor (Tools, Options, Editor) "Require Variable Declaration" qui est sans doute off chez toi et on chez les autres.
En principe quand tu as la référence le dim as Excel.application doit marcher mais sans la ref cela ne peut marcher car iil ignore la librairie Excel.
Si nécessaire dim xlapp as object marche aussi.
Bien à toi,
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Merci Jan, je crois que ta réponse me résoud partiellement mon problème. J'avais complètement oublié cette histoire de référence à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le dim... Sur les autres postes, ça ne fonctionne pas, il faut que je définisse l'objet xlApp. Si je définis par : dim xlApp as Excel.Application, le type n'est pas reconnu.
Bonjour Anne,
Il y a une option en VB Editor (Tools, Options, Editor) "Require Variable
Declaration" qui est sans doute off chez toi et on chez les autres.
En principe quand tu as la référence le dim as Excel.application doit
marcher mais sans la ref cela ne peut marcher car iil ignore la librairie
Excel.
Si nécessaire dim xlapp as object marche aussi.
Bien à toi,
--
Jan De Messemaeker, Microsoft Project Most Valuable Professional
http://users.online.be/prom-ade/
For FAQs: http://www.mvps.org/project/faqs.htm
"Anne" <anne.doctobre@wanadoo.fr> schreef in bericht
news:1141308061.408288.262310@i39g2000cwa.googlegroups.com...
Merci Jan, je crois que ta réponse me résoud partiellement mon
problème. J'avais complètement oublié cette histoire de référence
à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit
uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le
dim... Sur les autres postes, ça ne fonctionne pas, il faut que je
définisse l'objet xlApp. Si je définis par :
dim xlApp as Excel.Application, le type n'est pas reconnu.
Il y a une option en VB Editor (Tools, Options, Editor) "Require Variable Declaration" qui est sans doute off chez toi et on chez les autres.
En principe quand tu as la référence le dim as Excel.application doit marcher mais sans la ref cela ne peut marcher car iil ignore la librairie Excel.
Si nécessaire dim xlapp as object marche aussi.
Bien à toi,
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Merci Jan, je crois que ta réponse me résoud partiellement mon problème. J'avais complètement oublié cette histoire de référence à Excel.
Mais il y a toujours des dysfonctionnements. Sur mon poste, j'ai écrit uniquement "Set xlApp = CreateObject("Excel.Application") ", sans le dim... Sur les autres postes, ça ne fonctionne pas, il faut que je définisse l'objet xlApp. Si je définis par : dim xlApp as Excel.Application, le type n'est pas reconnu.
Anne
Merci beaucoup Jan. En fait la référence à Excel avait mal été validée chez l'utilisateur. Maintenant, le "dim xlApp as Excel.Application" fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi la déclaration obligatoire. Mais je pense avoir compris : j'ai dû déclaré une fois dim xlApp as Excel.Application, et cette déclaration a dû être "conservée" chez moi. J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être certaine de ne pas reproduire ce genre de choses.
Merci encore.
Merci beaucoup Jan.
En fait la référence à Excel avait mal été validée chez
l'utilisateur. Maintenant, le "dim xlApp as Excel.Application"
fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi
la déclaration obligatoire. Mais je pense avoir compris : j'ai dû
déclaré une fois dim xlApp as Excel.Application, et cette
déclaration a dû être "conservée" chez moi.
J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être
certaine de ne pas reproduire ce genre de choses.
Merci beaucoup Jan. En fait la référence à Excel avait mal été validée chez l'utilisateur. Maintenant, le "dim xlApp as Excel.Application" fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi la déclaration obligatoire. Mais je pense avoir compris : j'ai dû déclaré une fois dim xlApp as Excel.Application, et cette déclaration a dû être "conservée" chez moi. J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être certaine de ne pas reproduire ce genre de choses.
Merci encore.
Jan De Messemaeker
Bonjour,
Avant que tu ne le demandes... Excel à partir de Project a un pb insoluble. A la fin d'un traîtement même avec le =nothing, dans le task manager de Windows tu trouveras une instance "obscure" de Excel qui est gênante. Elle disparaît quand tu coupes Project.
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Merci beaucoup Jan. En fait la référence à Excel avait mal été validée chez l'utilisateur. Maintenant, le "dim xlApp as Excel.Application" fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi la déclaration obligatoire. Mais je pense avoir compris : j'ai dû déclaré une fois dim xlApp as Excel.Application, et cette déclaration a dû être "conservée" chez moi. J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être certaine de ne pas reproduire ce genre de choses.
Merci encore.
Bonjour,
Avant que tu ne le demandes... Excel à partir de Project a un pb insoluble.
A la fin d'un traîtement même avec le =nothing, dans le task manager de
Windows tu trouveras une instance "obscure" de Excel qui est gênante. Elle
disparaît quand tu coupes Project.
--
Jan De Messemaeker, Microsoft Project Most Valuable Professional
http://users.online.be/prom-ade/
For FAQs: http://www.mvps.org/project/faqs.htm
"Anne" <anne.doctobre@wanadoo.fr> schreef in bericht
news:1141311140.777888.301100@v46g2000cwv.googlegroups.com...
Merci beaucoup Jan.
En fait la référence à Excel avait mal été validée chez
l'utilisateur. Maintenant, le "dim xlApp as Excel.Application"
fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi
la déclaration obligatoire. Mais je pense avoir compris : j'ai dû
déclaré une fois dim xlApp as Excel.Application, et cette
déclaration a dû être "conservée" chez moi.
J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être
certaine de ne pas reproduire ce genre de choses.
Avant que tu ne le demandes... Excel à partir de Project a un pb insoluble. A la fin d'un traîtement même avec le =nothing, dans le task manager de Windows tu trouveras une instance "obscure" de Excel qui est gênante. Elle disparaît quand tu coupes Project.
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Anne" schreef in bericht news: Merci beaucoup Jan. En fait la référence à Excel avait mal été validée chez l'utilisateur. Maintenant, le "dim xlApp as Excel.Application" fonctionne.
En ce qui concerne la déclaration des variables, j'ai bien moi aussi la déclaration obligatoire. Mais je pense avoir compris : j'ai dû déclaré une fois dim xlApp as Excel.Application, et cette déclaration a dû être "conservée" chez moi. J'ai ajouté un set xlApp=Nothing à la fin de mon code, pour être certaine de ne pas reproduire ce genre de choses.
Merci encore.
Anne
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
En effet, j'avais remarqué ce problème, en pensant que cela venait
peut-être d'un défaut de mon code.
Merci beaucoup.
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin d'ajouter une référence à la main. Bonne journée.
- Karl Stewing, M7 Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
Jan De Messemaeker
Bonjour,
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel subsiste après la clôture de la macro même si on fait quit et on met xlapp à Nothing.
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Karl Stewing" schreef in bericht news:
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin d'ajouter une référence à la main. Bonne journée.
- Karl Stewing, M7 Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
Bonjour,
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel
subsiste après la clôture de la macro même si on fait quit et on met xlapp à
Nothing.
--
Jan De Messemaeker, Microsoft Project Most Valuable Professional
http://users.online.be/prom-ade/
For FAQs: http://www.mvps.org/project/faqs.htm
"Karl Stewing" <personne@quelquepart.com> schreef in bericht
news:u331RS2QGHA.4956@TK2MSFTNGP09.phx.gbl...
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin
d'ajouter une référence à la main.
Bonne journée.
- Karl Stewing, M7
Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait
peut-être d'un défaut de mon code.
Merci beaucoup.
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel subsiste après la clôture de la macro même si on fait quit et on met xlapp à Nothing.
-- Jan De Messemaeker, Microsoft Project Most Valuable Professional http://users.online.be/prom-ade/ For FAQs: http://www.mvps.org/project/faqs.htm "Karl Stewing" schreef in bericht news:
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin d'ajouter une référence à la main. Bonne journée.
- Karl Stewing, M7 Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
Karl Stewing
Bonjour Jan -
Je ne pense pas que ma réponse soit hors sujet, elle est juste un peu haute dans l'arbre des posts. En fait, elle traite de la manière de déclarer des variables (thème que vous avez abordé) et pas de la fermeture d'Excel. Désolé.
Par contre, pour ma culture personnelle, j'ai essayé le code suivant :
Option Explicit
Public Sub test()
Dim oApp As Object
Set oApp = CreateObject("Excel.Application") oApp.Quit Set oApp = Nothing
End Sub
et je ne trouve pas d'instance d'Excel qui fonctionne après ca, sans quitter Project. Qu'ai-je fais de différent par rapport à vous pour que je puisse voir ce pb ?
Merci.
- Karl Stewing, M7 Project MCP/MVP
Jan De Messemaeker wrote:
Bonjour,
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel subsiste après la clôture de la macro même si on fait quit et on met xlapp à Nothing.
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin d'ajouter une référence à la main. Bonne journée.
- Karl Stewing, M7 Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
Bonjour Jan -
Je ne pense pas que ma réponse soit hors sujet, elle est juste un peu haute
dans l'arbre des posts. En fait, elle traite de la manière de déclarer des
variables (thème que vous avez abordé) et pas de la fermeture d'Excel.
Désolé.
Par contre, pour ma culture personnelle, j'ai essayé le code suivant :
Option Explicit
Public Sub test()
Dim oApp As Object
Set oApp = CreateObject("Excel.Application")
oApp.Quit
Set oApp = Nothing
End Sub
et je ne trouve pas d'instance d'Excel qui fonctionne après ca, sans quitter
Project. Qu'ai-je fais de différent par rapport à vous pour que je puisse
voir ce pb ?
Merci.
- Karl Stewing, M7
Project MCP/MVP
Jan De Messemaeker wrote:
Bonjour,
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel
subsiste après la clôture de la macro même si on fait quit et on met
xlapp à Nothing.
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus
besoin d'ajouter une référence à la main.
Bonne journée.
- Karl Stewing, M7
Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait
peut-être d'un défaut de mon code.
Merci beaucoup.
Je ne pense pas que ma réponse soit hors sujet, elle est juste un peu haute dans l'arbre des posts. En fait, elle traite de la manière de déclarer des variables (thème que vous avez abordé) et pas de la fermeture d'Excel. Désolé.
Par contre, pour ma culture personnelle, j'ai essayé le code suivant :
Option Explicit
Public Sub test()
Dim oApp As Object
Set oApp = CreateObject("Excel.Application") oApp.Quit Set oApp = Nothing
End Sub
et je ne trouve pas d'instance d'Excel qui fonctionne après ca, sans quitter Project. Qu'ai-je fais de différent par rapport à vous pour que je puisse voir ce pb ?
Merci.
- Karl Stewing, M7 Project MCP/MVP
Jan De Messemaeker wrote:
Bonjour,
Ceci ne résout pas le problème discuté, qui est qu'une instance Excel subsiste après la clôture de la macro même si on fait quit et on met xlapp à Nothing.
Bonjour Anne -
Il reste aussi la possibilité suivante :
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
C'est ce que l'on appelle du late binding je crois. Avec ca, plus besoin d'ajouter une référence à la main. Bonne journée.
- Karl Stewing, M7 Project MCP/MVP
Anne wrote:
En effet, j'avais remarqué ce problème, en pensant que cela venait peut-être d'un défaut de mon code. Merci beaucoup.
Anne
Effectivement, je ne vois pas de différence avec les commandes que j'utilise. Mais parfois l'instance Excel qui reste est bien cachée... Autre chose : j'ai utilisé des "End" pour des boutons Quitter dans ma macro, cela doit également poser des problèmes pour fermer l'instance Excel. Apparemment il n'est pas très bon d'utiliser des "End".
Effectivement, je ne vois pas de différence avec les commandes que
j'utilise. Mais parfois l'instance Excel qui reste est bien cachée...
Autre chose : j'ai utilisé des "End" pour des boutons Quitter dans ma
macro, cela doit également poser des problèmes pour fermer l'instance
Excel. Apparemment il n'est pas très bon d'utiliser des "End".
Effectivement, je ne vois pas de différence avec les commandes que j'utilise. Mais parfois l'instance Excel qui reste est bien cachée... Autre chose : j'ai utilisé des "End" pour des boutons Quitter dans ma macro, cela doit également poser des problèmes pour fermer l'instance Excel. Apparemment il n'est pas très bon d'utiliser des "End".