Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Exécution d'une macro avec paramètre à l'ouverture d'un classeur

6 réponses
Avatar
Piotr
Bonjour,

Je souhaite qu'une macro spécifique s'exécute à l'ouverture d'un classeur.
Je connais la macro Workbook_Open, mais je souhaiterais que la macro à
l'ouverture ait un paramètre.

Par exemple, pouvoir lancer : test.xls/x=macro1(param1)
où :
- macro1 est une macro de test.xls
- param1 est le paramètre de cette macro

Mais je ne sais pas si une instruction du type "/x=" existe.

Pour information, il s'agit d'excel 2003, et l'ouverture du classeur se fera
probablement par un lien hypertexte (mais pas sûr : à définir).

Quelqu'un sait-il si cela est faisable ?

Merci.
Piotr.

6 réponses

Avatar
lSteph
Bonjour,

Au lieu de dire le comment tu penses faire mais que tu n'y arrive pas
pour faire le ce que finalement tu veux faire mais que tu ne dis pas.

Dis nous plutôt ce que tu veux faire et on verra pour répondre si on
sait comment, mais d'abord il faut qu'on sache quoi.
Ton idée de WorkBook_Open ressemble mieux à une bonne piste
qu'un lien htx qui est rarement une bonne solution
et en l'espèce connaître le fâmeux ...(mais pas sûr : à définir ).
Donc le contexte...
tu veux ouvrir un classeur depuis où?
Selon la macro appelée à l'ouverture on peut choisir un classeur à
ouvrir , une macro à executer...etc...
selon les opérations à réaliser qui dépendraient de ce que tu
envisages par /n.../x
il y a probablement des méthodes appropriées à ton besoin.
Je pense à un Select Case par exemple.

@suivre...

Cordialement.

--
lSteph



On 13 déc, 18:00, "Piotr" wrote:
Bonjour,

Je souhaite qu'une macro spécifique s'exécute à l'ouverture d'un cla sseur.
Je connais la macro Workbook_Open, mais je souhaiterais que la macro à
l'ouverture ait un paramètre.

Par exemple, pouvoir lancer : test.xls/x=macro1(param1)
où :
- macro1 est une macro de test.xls
- param1 est le paramètre de cette macro

Mais je ne sais pas si une instruction du type "/x=" existe.

Pour information, il s'agit d'excel 2003, et l'ouverture du classeur se fe ra
probablement par un lien hypertexte (mais pas sûr : à définir).

Quelqu'un sait-il si cela est faisable ?

Merci.
Piotr.


Avatar
Piotr
Merci d'avoir répondu.

J'en suis actuellement au test de techno, et je ne suis pas sûr de retenir
Excel. Mais je creuse au cas où...

Mon besoin est de mettre des documents sur un intranet (a priori tout le
monde dispose d'Excel).

Ma difficulté réside dans le fait que je peux avoir un grand nombre de
documents (plusieurs centaines) si je les sépare.

Je peux les générer assez facilement par une macro Excel à partir d'un seul
classeur. Je peux donc soit les générer à l'avance, soit, si c'est possible,
les générer à la volée.

C'est pour cette dernière hypothèse que je vous pose cette question. En
imaginant que la demande du document se fasse par un lien sur une page html,
quelle instruction demander en ouvrant Excel pour lui indiquer qu'il doit
générer le document rattaché à un identifiant ?

Si cela est possible, même si je ne l'utilise pas pour ce cas précis, je
trouverai certainement d'autres occasions.
Je serais assez surpris que cela n'existe pas (en tout cas sans "bidouille"
ni complexité excessive)... mais peut-être.

Merci d'avance.
Piotr.


"lSteph" a écrit dans le message de news:

Bonjour,

Au lieu de dire le comment tu penses faire mais que tu n'y arrive pas
pour faire le ce que finalement tu veux faire mais que tu ne dis pas.

Dis nous plutôt ce que tu veux faire et on verra pour répondre si on
sait comment, mais d'abord il faut qu'on sache quoi.
Ton idée de WorkBook_Open ressemble mieux à une bonne piste
qu'un lien htx qui est rarement une bonne solution
et en l'espèce connaître le fâmeux ...(mais pas sûr : à définir).
Donc le contexte...
tu veux ouvrir un classeur depuis où?
Selon la macro appelée à l'ouverture on peut choisir un classeur à
ouvrir , une macro à executer...etc...
selon les opérations à réaliser qui dépendraient de ce que tu
envisages par /n.../x
il y a probablement des méthodes appropriées à ton besoin.
Je pense à un Select Case par exemple.

@suivre...

Cordialement.

--
lSteph



On 13 déc, 18:00, "Piotr" wrote:
Bonjour,

Je souhaite qu'une macro spécifique s'exécute à l'ouverture d'un classeur.
Je connais la macro Workbook_Open, mais je souhaiterais que la macro à
l'ouverture ait un paramètre.

Par exemple, pouvoir lancer : test.xls/x=macro1(param1)
où :
- macro1 est une macro de test.xls
- param1 est le paramètre de cette macro

Mais je ne sais pas si une instruction du type "/x=" existe.

Pour information, il s'agit d'excel 2003, et l'ouverture du classeur se
fera
probablement par un lien hypertexte (mais pas sûr : à définir).

Quelqu'un sait-il si cela est faisable ?

Merci.
Piotr.


Avatar
Daniel.C
Bonsoir.
Tu peux utiliser le code suivant :

Private Sub Workbook_Open()
parametre = InputBox("Entre le paramètre")
MacroAExecuter parametre
End Sub

Cordialement.
Daniel
"Piotr" a écrit dans le message de news:
fjrs17$nmq$
Merci d'avoir répondu.

J'en suis actuellement au test de techno, et je ne suis pas sûr de retenir
Excel. Mais je creuse au cas où...

Mon besoin est de mettre des documents sur un intranet (a priori tout le
monde dispose d'Excel).

Ma difficulté réside dans le fait que je peux avoir un grand nombre de
documents (plusieurs centaines) si je les sépare.

Je peux les générer assez facilement par une macro Excel à partir d'un
seul classeur. Je peux donc soit les générer à l'avance, soit, si c'est
possible, les générer à la volée.

C'est pour cette dernière hypothèse que je vous pose cette question. En
imaginant que la demande du document se fasse par un lien sur une page
html, quelle instruction demander en ouvrant Excel pour lui indiquer qu'il
doit générer le document rattaché à un identifiant ?

Si cela est possible, même si je ne l'utilise pas pour ce cas précis, je
trouverai certainement d'autres occasions.
Je serais assez surpris que cela n'existe pas (en tout cas sans
"bidouille" ni complexité excessive)... mais peut-être.

Merci d'avance.
Piotr.


"lSteph" a écrit dans le message de news:

Bonjour,

Au lieu de dire le comment tu penses faire mais que tu n'y arrive pas
pour faire le ce que finalement tu veux faire mais que tu ne dis pas.

Dis nous plutôt ce que tu veux faire et on verra pour répondre si on
sait comment, mais d'abord il faut qu'on sache quoi.
Ton idée de WorkBook_Open ressemble mieux à une bonne piste
qu'un lien htx qui est rarement une bonne solution
et en l'espèce connaître le fâmeux ...(mais pas sûr : à définir).
Donc le contexte...
tu veux ouvrir un classeur depuis où?
Selon la macro appelée à l'ouverture on peut choisir un classeur à
ouvrir , une macro à executer...etc...
selon les opérations à réaliser qui dépendraient de ce que tu
envisages par /n.../x
il y a probablement des méthodes appropriées à ton besoin.
Je pense à un Select Case par exemple.

@suivre...

Cordialement.

--
lSteph



On 13 déc, 18:00, "Piotr" wrote:
Bonjour,

Je souhaite qu'une macro spécifique s'exécute à l'ouverture d'un
classeur.
Je connais la macro Workbook_Open, mais je souhaiterais que la macro à
l'ouverture ait un paramètre.

Par exemple, pouvoir lancer : test.xls/x=macro1(param1)
où :
- macro1 est une macro de test.xls
- param1 est le paramètre de cette macro

Mais je ne sais pas si une instruction du type "/x=" existe.

Pour information, il s'agit d'excel 2003, et l'ouverture du classeur se
fera
probablement par un lien hypertexte (mais pas sûr : à définir).

Quelqu'un sait-il si cela est faisable ?

Merci.
Piotr.






Avatar
LSteph
Bonjour,
Si j'ai bien compris,
tu as un classeur (assez conséquent) contenant toutes les données
nécessaires à la génération d'un classeur pour chacun des utilisateurs
habilités et contenant une feuille ( ou disons les données)
correspondant au profil de l'utilisateur qui y vient.

Ca serait du réseau, plutôt que de l'intranet..?

(Pour de l'intranet il y a des outils pour ça)

Une idée, pour correspondre à chaque utilisateur dans ton réseau ,
suppose qu'un login de connexion corresponde bien à un même utilisateur

Donc par VBA en utilisant environ("username") dans le thisworkbook ,
évennement Private Sub Workbook_Open d'un classeur qui s'ouvre lui
faire executer une requête qui va chercher dans le "gros classeur"
les données correspondant à ce username.

En gros s'agissant d'une base de données un champ pour username.

Cela suppose que toutes les données nécessaires de ton "gros classeur"
soient bien référencées pour l'ensemble des username de ton réseau.
C'est que cela peut demander de la mise à jour régulière de ton classeur
tout cela!
Sauf plus d'éléments pour en cerner davantage sur la structure, il
pourrait être effectivement aussi simple de générer à l'avance disons
selon une modalité, semaine, mois...(pour l'instant c'est certes abstrait)
en fonction des users connus du classeur.

Cordialement.

--
lSteph

Merci d'avoir répondu.

J'en suis actuellement au test de techno, et je ne suis pas sûr de retenir
Excel. Mais je creuse au cas où...

Mon besoin est de mettre des documents sur un intranet (a priori tout le
monde dispose d'Excel).

Ma difficulté réside dans le fait que je peux avoir un grand nombre de
documents (plusieurs centaines) si je les sépare.

Je peux les générer assez facilement par une macro Excel à partir d'un seul
classeur. Je peux donc soit les générer à l'avance, soit, si c'est possible,
les générer à la volée.

C'est pour cette dernière hypothèse que je vous pose cette question. En
imaginant que la demande du document se fasse par un lien sur une page html,
quelle instruction demander en ouvrant Excel pour lui indiquer qu'il doit
générer le document rattaché à un identifiant ?

Si cela est possible, même si je ne l'utilise pas pour ce cas précis, je
trouverai certainement d'autres occasions.
Je serais assez surpris que cela n'existe pas (en tout cas sans "bidouille"
ni complexité excessive)... mais peut-être.

Merci d'avance.
Piotr.


"lSteph" a écrit dans le message de news:

Bonjour,

Au lieu de dire le comment tu penses faire mais que tu n'y arrive pas
pour faire le ce que finalement tu veux faire mais que tu ne dis pas.

Dis nous plutôt ce que tu veux faire et on verra pour répondre si on
sait comment, mais d'abord il faut qu'on sache quoi.
Ton idée de WorkBook_Open ressemble mieux à une bonne piste
qu'un lien htx qui est rarement une bonne solution
et en l'espèce connaître le fâmeux ...(mais pas sûr : à définir).
Donc le contexte...
tu veux ouvrir un classeur depuis où?
Selon la macro appelée à l'ouverture on peut choisir un classeur à
ouvrir , une macro à executer...etc...
selon les opérations à réaliser qui dépendraient de ce que tu
envisages par /n.../x
il y a probablement des méthodes appropriées à ton besoin.
Je pense à un Select Case par exemple.

@suivre...

Cordialement.

--
lSteph



On 13 déc, 18:00, "Piotr" wrote:
Bonjour,

Je souhaite qu'une macro spécifique s'exécute à l'ouverture d'un classeur.
Je connais la macro Workbook_Open, mais je souhaiterais que la macro à
l'ouverture ait un paramètre.

Par exemple, pouvoir lancer : test.xls/x=macro1(param1)
où :
- macro1 est une macro de test.xls
- param1 est le paramètre de cette macro

Mais je ne sais pas si une instruction du type "/x=" existe.

Pour information, il s'agit d'excel 2003, et l'ouverture du classeur se
fera
probablement par un lien hypertexte (mais pas sûr : à définir).

Quelqu'un sait-il si cela est faisable ?

Merci.
Piotr.






Avatar
Piotr
Bonjour,
Si j'ai bien compris,
tu as un classeur (assez conséquent) contenant toutes les données
nécessaires à la génération d'un classeur pour chacun des utilisateurs
habilités et contenant une feuille ( ou disons les données) correspondant
au profil de l'utilisateur qui y vient.



C'est cela. Si ce n'est que ce n'est pas lié au profil utilisateur. Cela
ressemble plutôt à un tableau de bord par point de vente.

Ca serait du réseau, plutôt que de l'intranet..?
(Pour de l'intranet il y a des outils pour ça)


L'accès et la sélection se fera très certainement par des pages html pour
des raisons "d'enrobage" dans un contexte plus large.
Je regarde également d'autres outils. Si tu en as à me citer, je suis
preneur. Mais je ne pense pas obtenir l'autorisation d'installer une appli
sur un serveur.


Une idée, pour correspondre à chaque utilisateur dans ton réseau , suppose
qu'un login de connexion corresponde bien à un même utilisateur

Donc par VBA en utilisant environ("username") dans le thisworkbook ,
évennement Private Sub Workbook_Open d'un classeur qui s'ouvre lui
faire executer une requête qui va chercher dans le "gros classeur"
les données correspondant à ce username.

En gros s'agissant d'une base de données un champ pour username.



L'idée est bonne. Je crains que ce ne soit pas si simple dans la mesure où
une même personne doit probblament pouvoir consulter plusieurs document.
Mais je retiens le principe.

Cela suppose que toutes les données nécessaires de ton "gros classeur"
soient bien référencées pour l'ensemble des username de ton réseau.
C'est que cela peut demander de la mise à jour régulière de ton classeur
tout cela!


Effectivement cela s'annonce assez complexe à maintenir... Mais cela peut
être utile pour limiter l'accès des classeurs à certains utilisateurs.

Sauf plus d'éléments pour en cerner davantage sur la structure, il
pourrait être effectivement aussi simple de générer à l'avance disons
selon une modalité, semaine, mois...(pour l'instant c'est certes abstrait)
en fonction des users connus du classeur.


Je m'oriente en effet dans cette direction.

Ce me semblait plus facile de maintenir une seule "base de données" (le mot
est pris au sens large) et d'avoir un outil de génération "à la volée" que
de devoir produire régulièrement une grande quantité de dossiers. Mais
bon...

Cependant, je m'étonne que ce ne soit pas possible d'ouvrir un classeur
Excel en indiquant une macro ou une instruction à exécuter à l'ouverture.
J'ai vu sur un site (http://xcell05.free.fr/) qu'il existe une "bidouille"
pour faire cela, mais je préfère ne pas utiliser une fonction détournée.

Merci pour toutes vos réponses.
Piotr.

Avatar
lSteph
Re,


L'accès et la sélection se fera très certainement par des pages html pour
des raisons "d'enrobage" dans un contexte plus large.
C'est ce que je comprenais.

Je regarde également d'autres outils. Si tu en as à me citer, je suis
preneur. Mais je ne pense pas obtenir l'autorisation d'installer une appli
sur un serveur.
Il y a cela sur la toile, je ne vais faire de pub ni bonne ni

mauvaise!
Ce qu'on a chez nous (ne puis en dire+) coute cher et n'est pas
forcément top
On peut aussi apprendre le php ou autre...

Une idée, pour correspondre à chaque utilisateur dans ton réseau , suppose
qu'un login de connexion corresponde bien à un même utilisateur

Donc par VBA en utilisant environ("username") dans le thisworkbook ,
évennement Private Sub Workbook_Open d'un classeur qui s'ouvre lui
faire executer une requête qui va chercher dans le "gros classeur"
les données correspondant à ce username.


Cependant, je m'étonne que ce ne soit pas possible d'ouvrir un classeur
Excel en indiquant une macro ou une instruction à exécuter à l'ouver ture.


Je n'ai jamais dit un truc pareil au contraire tu peux utiliser
WorkBook_Open et appeler ce que tu veux avec call
exemple call mamacro
Sinon tu peux prévoir sur ta page html autant de liens que
fichiers(vides) contenant simplement chacun le WorkBook_open
correspondant au lien

J'ai vu sur un site (http://xcell05.free.fr/) qu'il existe une "bidouille"
pour faire cela, mais je préfère ne pas utiliser une fonction détour née.


Si c'est détourné ce doit probablement être indiqué.
Les orfèvres en programmation sont nécessairement amha des gens qui
aiment la bidouille, rester uniquement dans les clous, presque tout le
monde peut le faire!

En tous cas si ce terme doit avoir un sens péjoratif, il ne convient
certes pas au site dont tu parles qui est plutôt une bonne référence.

@ bientôt.

--
lSteph