Utilisation d'une instance excel à partir de Project

Le
Anne
Bonjour,

Dans des macros VBA sous MS Project, je cherche lire des donnes
dans un classeur excel.
A l'aide de diffrents messages dj posts sur ce sujet, j'ai pu
crire des lignes de code qui fonctionnent trs bien chez moi.
Exemple :
Set xlApp = CreateObject("Excel.Application")
xlApp.Workbooks.Open ActiveProject.Path &
"Paramtres_essais.xls", _
ReadOnly:=True
etc
Malheureusement, lorsque je copie ces macros chez les autres
utilisateurs, il y a erreur : a priori, il faut dfinir tous les
paramtres Excel.
J'ai ajout la commande dim xlApp as Excel.Application, mais cela ne
fonctionne pas. Dim xlApp as Object semble marcher. J'ai dj du mal
comprendre
Ensuite, il faut apparemment que je dfinisse toutes les commandes
excel du type xlToRight, xlDown, etc.
Est-ce normal? Comment les dfinir?

Merci d'avance!

  • Partager ce contenu :
Vos réponses Page 1 / 2
Trier par : date / pertinence
Jan De Messemaeker
Le #548790
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" 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
Le #548787
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
Le #548786
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" 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
Le #548784
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
Le #548516
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" 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
Le #548515
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
Le #548509
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.


Jan De Messemaeker
Le #548252
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" 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
Le #548251
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.






Anne
Le #547953
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".
Poster une réponse
Anonyme