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

Variable 'invariable'

6 réponses
Avatar
Gadget
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros d'impression
fonctionne indifferemment sur les deux postes, c'est pourquoi j'ai besoinde
récupérer le nom des imprimantes qui diffère selon le poste. J'utilise donc
une variable NomImp qui est initialisée dans WorkBook.Open, selon le
résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive souvant
que j'interrompe le déroulement du code en réinitialisant le projet. A ce
moment là, ma variable NomImp est réinitialisée à vide, puisque je ne
réouvre pas le Workbook. Dans quel module dois-mettre le code qui détermine
le chemin de l'imprimante afin qu'il ne disparaisse pas en cas de
réinitialisation, ou bien qu'a l'execution d'une macro quelqconque, il
retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début de
chaque macro utilisant les imprimantes, mais ce n'est pas très élégant.

En fait, c'est pour celà que je cherchais, dans mes question précédentes, à
affecter à une cellule le chemin de l'imprimante (puisque la valeur des
cellules n'est pas, elle, volatile) et que lesdites questions portaient sur
l'identification de l'utilisateur sans VBA et l'affectation d'une variable
VBA à la valeur d'une cellule nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
>>> www.tohubohu.fr <<<

6 réponses

Avatar
tissot.emmanuel
Bonjour,

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Choix de l'imprimante ici
End Sub

Cordialement,

Manu/

"Gadget" a écrit dans le message de news:
4641b29e$0$5077$
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros
d'impression fonctionne indifferemment sur les deux postes, c'est pourquoi
j'ai besoinde récupérer le nom des imprimantes qui diffère selon le poste.
J'utilise donc une variable NomImp qui est initialisée dans WorkBook.Open,
selon le résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive souvant
que j'interrompe le déroulement du code en réinitialisant le projet. A ce
moment là, ma variable NomImp est réinitialisée à vide, puisque je ne
réouvre pas le Workbook. Dans quel module dois-mettre le code qui
détermine le chemin de l'imprimante afin qu'il ne disparaisse pas en cas
de réinitialisation, ou bien qu'a l'execution d'une macro quelqconque, il
retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début de
chaque macro utilisant les imprimantes, mais ce n'est pas très élégant.

En fait, c'est pour celà que je cherchais, dans mes question précédentes,
à affecter à une cellule le chemin de l'imprimante (puisque la valeur des
cellules n'est pas, elle, volatile) et que lesdites questions portaient
sur l'identification de l'utilisateur sans VBA et l'affectation d'une
variable VBA à la valeur d'une cellule nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
www.tohubohu.fr <<<










Avatar
Gadget
OK mais si je met ça dans mon code VBA excel et que j'imprime un doc Word à
travers un Wapp.Printout, la procédure Workbook_Beforeprint ne se
déclenchera pas, n'est-ce pas ?
Il faudrait que je mette ça également dans le code de mes modèles Word, il y
en a une petite dizaine différents, et ça commence à faire beaucoup de
manips.
Il n'y a pas de procédure Worbook.initialize ?

Cordialement.



--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de news:




Bonjour,

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Choix de l'imprimante ici
End Sub

Cordialement,

Manu/

"Gadget" a écrit dans le message de news:
4641b29e$0$5077$
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros
d'impression fonctionne indifferemment sur les deux postes, c'est
pourquoi j'ai besoinde récupérer le nom des imprimantes qui diffère selon
le poste. J'utilise donc une variable NomImp qui est initialisée dans
WorkBook.Open, selon le résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive
souvant que j'interrompe le déroulement du code en réinitialisant le
projet. A ce moment là, ma variable NomImp est réinitialisée à vide,
puisque je ne réouvre pas le Workbook. Dans quel module dois-mettre le
code qui détermine le chemin de l'imprimante afin qu'il ne disparaisse
pas en cas de réinitialisation, ou bien qu'a l'execution d'une macro
quelqconque, il retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début de
chaque macro utilisant les imprimantes, mais ce n'est pas très élégant.

En fait, c'est pour celà que je cherchais, dans mes question précédentes,
à affecter à une cellule le chemin de l'imprimante (puisque la valeur des
cellules n'est pas, elle, volatile) et que lesdites questions portaient
sur l'identification de l'utilisateur sans VBA et l'affectation d'une
variable VBA à la valeur d'une cellule nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
www.tohubohu.fr <<<














Avatar
tissot.emmanuel
Bonjour,

Le probleme est il de définir la bonne imprimante lorsque on imprime un
document Word depuis Excel ?
Tu peux essayer comme ceci:

Dans VBE>Insertion>Module de classe>F4> renommer le module en WordModule

Dans le module de classe:

Public WithEvents WordApp As Word.Application

Private Sub Class_Initialize()
Set WordApp = CreateObject("Word.Application")
End Sub

Private Sub WordApp_DocumentBeforePrint(ByVal Doc As Word.Document, Cancel
As Boolean)
'Choix de l'imprimante ici
MsgBox WordApp.ActivePrinter
End Sub

Dans un module standard ou tout autre module approprié de ton projet:

Dim wApp As WordModule

Private Sub Test()
Set wApp = New WordModule 'Cree l'instance de Word via
Class1_Initialize
Set wApp.WordApp = Word.Application 'connecte wApp et l'instance de Word
End Sub

A partir de la, à chaque instructions wApp.Printout la procedure
WordApp_DocumentBeforePrint sera éxecutée.

Tiens nous au courant.

Manu/

"Gadget" a écrit dans le message de news:
4641c237$0$27398$
OK mais si je met ça dans mon code VBA excel et que j'imprime un doc Word
à travers un Wapp.Printout, la procédure Workbook_Beforeprint ne se
déclenchera pas, n'est-ce pas ?
Il faudrait que je mette ça également dans le code de mes modèles Word, il
y en a une petite dizaine différents, et ça commence à faire beaucoup de
manips.
Il n'y a pas de procédure Worbook.initialize ?

Cordialement.



--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de



news:
Bonjour,

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Choix de l'imprimante ici
End Sub

Cordialement,

Manu/

"Gadget" a écrit dans le message de news:
4641b29e$0$5077$
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros
d'impression fonctionne indifferemment sur les deux postes, c'est
pourquoi j'ai besoinde récupérer le nom des imprimantes qui diffère
selon le poste. J'utilise donc une variable NomImp qui est initialisée
dans WorkBook.Open, selon le résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive
souvant que j'interrompe le déroulement du code en réinitialisant le
projet. A ce moment là, ma variable NomImp est réinitialisée à vide,
puisque je ne réouvre pas le Workbook. Dans quel module dois-mettre le
code qui détermine le chemin de l'imprimante afin qu'il ne disparaisse
pas en cas de réinitialisation, ou bien qu'a l'execution d'une macro
quelqconque, il retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début
de chaque macro utilisant les imprimantes, mais ce n'est pas très
élégant.

En fait, c'est pour celà que je cherchais, dans mes question
précédentes, à affecter à une cellule le chemin de l'imprimante (puisque
la valeur des cellules n'est pas, elle, volatile) et que lesdites
questions portaient sur l'identification de l'utilisateur sans VBA et
l'affectation d'une variable VBA à la valeur d'une cellule nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
www.tohubohu.fr <<<


















Avatar
Gadget
Merci. Je ne savais pas que l'on pouvait directement rédiger des
instructions dans un module Word inséré dans mon code VBA Excel. Je vais
essayer.


--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de news:




Bonjour,

Le probleme est il de définir la bonne imprimante lorsque on imprime un
document Word depuis Excel ?
Tu peux essayer comme ceci:

Dans VBE>Insertion>Module de classe>F4> renommer le module en WordModule

Dans le module de classe:

Public WithEvents WordApp As Word.Application

Private Sub Class_Initialize()
Set WordApp = CreateObject("Word.Application")
End Sub

Private Sub WordApp_DocumentBeforePrint(ByVal Doc As Word.Document, Cancel
As Boolean)
'Choix de l'imprimante ici
MsgBox WordApp.ActivePrinter
End Sub

Dans un module standard ou tout autre module approprié de ton projet:

Dim wApp As WordModule

Private Sub Test()
Set wApp = New WordModule 'Cree l'instance de Word via
Class1_Initialize
Set wApp.WordApp = Word.Application 'connecte wApp et l'instance de
Word
End Sub

A partir de la, à chaque instructions wApp.Printout la procedure
WordApp_DocumentBeforePrint sera éxecutée.

Tiens nous au courant.

Manu/

"Gadget" a écrit dans le message de news:
4641c237$0$27398$
OK mais si je met ça dans mon code VBA excel et que j'imprime un doc Word
à travers un Wapp.Printout, la procédure Workbook_Beforeprint ne se
déclenchera pas, n'est-ce pas ?
Il faudrait que je mette ça également dans le code de mes modèles Word,
il y en a une petite dizaine différents, et ça commence à faire beaucoup
de manips.
Il n'y a pas de procédure Worbook.initialize ?

Cordialement.



--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de



news:
Bonjour,

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Choix de l'imprimante ici
End Sub

Cordialement,

Manu/

"Gadget" a écrit dans le message de news:
4641b29e$0$5077$
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros
d'impression fonctionne indifferemment sur les deux postes, c'est
pourquoi j'ai besoinde récupérer le nom des imprimantes qui diffère
selon le poste. J'utilise donc une variable NomImp qui est initialisée
dans WorkBook.Open, selon le résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive
souvant que j'interrompe le déroulement du code en réinitialisant le
projet. A ce moment là, ma variable NomImp est réinitialisée à vide,
puisque je ne réouvre pas le Workbook. Dans quel module dois-mettre le
code qui détermine le chemin de l'imprimante afin qu'il ne disparaisse
pas en cas de réinitialisation, ou bien qu'a l'execution d'une macro
quelqconque, il retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début
de chaque macro utilisant les imprimantes, mais ce n'est pas très
élégant.

En fait, c'est pour celà que je cherchais, dans mes question
précédentes, à affecter à une cellule le chemin de l'imprimante
(puisque la valeur des cellules n'est pas, elle, volatile) et que
lesdites questions portaient sur l'identification de l'utilisateur sans
VBA et l'affectation d'une variable VBA à la valeur d'une cellule
nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
www.tohubohu.fr <<<






















Avatar
Gadget
Encore un dernier petit truc.
Ma macro ouvre plusieurs modèles Word (contrat, facture, lettre, fiche
technique) l'un après l'autre, met à jour les liens, les imprime, enregistre
sous les documents mis à jour puis les ferme.
Elle traite chaque document l'un après l'autre (elle ouvre, traite, imprime
et ferme la lettre, puis pareil avec le contrat, etc.).
Je rencontre un problème : il arrive souvent un message d'erreur Word :
'impossible de terminer l'enregistrement : erreur d'autorisation d'accès au
fichier "Chelin du normal.dot" '
Je suppose que celà est dû à l'empilement des ordres consécutifs trop rapide
: l'odre de fermer l'occurence de Word arrive avant que le Saveas soit
terminé.
J'ai essayé Wapp.DoEvents mais cela ne marche pas (Y a-t-il une autre
syntaxe ?))).
J'ai mis des boucles d'attente de quelques secondes mais ce n'est pas très
classe, celà fait perdre du temps et ça ne marche pas toujours.
Est-ce que le module de classe Word que tu me proposes, Emmanuel, peut
m'être utile pour résoudre ce problème ? Je veux dire, puis-je ajouter une
procédure _BeforeClose ou _BeforeSave pour y glisser un DoEvents ?

Merci.



--
Visitez notre site !
www.tohubohu.fr <<<
"Gadget" a écrit dans le message de news:



4642c858$0$5086$
Merci. Je ne savais pas que l'on pouvait directement rédiger des
instructions dans un module Word inséré dans mon code VBA Excel. Je vais
essayer.


--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de



news:
Bonjour,

Le probleme est il de définir la bonne imprimante lorsque on imprime un
document Word depuis Excel ?
Tu peux essayer comme ceci:

Dans VBE>Insertion>Module de classe>F4> renommer le module en WordModule

Dans le module de classe:

Public WithEvents WordApp As Word.Application

Private Sub Class_Initialize()
Set WordApp = CreateObject("Word.Application")
End Sub

Private Sub WordApp_DocumentBeforePrint(ByVal Doc As Word.Document,
Cancel As Boolean)
'Choix de l'imprimante ici
MsgBox WordApp.ActivePrinter
End Sub

Dans un module standard ou tout autre module approprié de ton projet:

Dim wApp As WordModule

Private Sub Test()
Set wApp = New WordModule 'Cree l'instance de Word via
Class1_Initialize
Set wApp.WordApp = Word.Application 'connecte wApp et l'instance de
Word
End Sub

A partir de la, à chaque instructions wApp.Printout la procedure
WordApp_DocumentBeforePrint sera éxecutée.

Tiens nous au courant.

Manu/

"Gadget" a écrit dans le message de news:
4641c237$0$27398$
OK mais si je met ça dans mon code VBA excel et que j'imprime un doc
Word à travers un Wapp.Printout, la procédure Workbook_Beforeprint ne se
déclenchera pas, n'est-ce pas ?
Il faudrait que je mette ça également dans le code de mes modèles Word,
il y en a une petite dizaine différents, et ça commence à faire beaucoup
de manips.
Il n'y a pas de procédure Worbook.initialize ?

Cordialement.



--
Visitez notre site !
www.tohubohu.fr <<<
"tissot.emmanuel" a écrit dans le message de



news:
Bonjour,

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'Choix de l'imprimante ici
End Sub

Cordialement,

Manu/

"Gadget" a écrit dans le message de news:
4641b29e$0$5077$
Encore salut à tous.
J'ai deux postes en petit reseau, et je voudrais que mes macros
d'impression fonctionne indifferemment sur les deux postes, c'est
pourquoi j'ai besoinde récupérer le nom des imprimantes qui diffère
selon le poste. J'utilise donc une variable NomImp qui est initialisée
dans WorkBook.Open, selon le résultat de Environ("Username").

Seuelemnt voilà : étant donné que je débugge mes macros, il arrive
souvant que j'interrompe le déroulement du code en réinitialisant le
projet. A ce moment là, ma variable NomImp est réinitialisée à vide,
puisque je ne réouvre pas le Workbook. Dans quel module dois-mettre le
code qui détermine le chemin de l'imprimante afin qu'il ne disparaisse
pas en cas de réinitialisation, ou bien qu'a l'execution d'une macro
quelqconque, il retrouve sa valeur ?

Je pourrais créer une macro Initialisation() que j'appelerais au début
de chaque macro utilisant les imprimantes, mais ce n'est pas très
élégant.

En fait, c'est pour celà que je cherchais, dans mes question
précédentes, à affecter à une cellule le chemin de l'imprimante
(puisque la valeur des cellules n'est pas, elle, volatile) et que
lesdites questions portaient sur l'identification de l'utilisateur
sans VBA et l'affectation d'une variable VBA à la valeur d'une cellule
nommée.

Des suggestions ?
Merci.


--
Visitez notre site !
www.tohubohu.fr <<<


























Avatar
tissot.emmanuel
Bonjour,

Je rencontre un problème : il arrive souvent un message d'erreur Word :
'impossible de terminer l'enregistrement : erreur d'autorisation d'accès
au fichier "Chelin du normal.dot" '


Verifie dans le gestionnaire de tache onglet Processus.si tu n'as pas créé
plusieurs instances de Word. Chaque instance de Word est désigné par
winword.exe, ferme les toutes avant de relancer tes macros.

: l'odre de fermer l'occurence de Word arrive avant que le Saveas soit
terminé.


A priori non, si tu fais
UnDocument.SaveAs Chemin
Wapp.Quit
La deuxieme instruction ne commence pas tant que la 1ere n'est pas terminée.

J'ai essayé Wapp.DoEvents mais cela ne marche pas (Y a-t-il une autre
syntaxe ?))).


La bonne syntaxe est:
DoEvents

Je veux dire, puis-je ajouter une procédure _BeforeClose ou _BeforeSave
Oui c'est même fait pour ca. Regarde dans la liste en haut à droite du

module de classe, tu as tous les évenements disponibles.

pour y glisser un DoEvents ?
Pourquoi pas, qui ne tente rien...


Bon courage,

Manu/