OVH Cloud OVH Cloud

Boucle d'impression et blocage

3 réponses
Avatar
HD
Bonjour,

Sur Excel j'ai une macro qui effectue une boucle pour imprimer une série de
fichier Excel et Word... Mon problème est que ma boucle bloque sur un
document Word et pour la débloquer je suis obligé de faire un ctrl + alt +
suppr pour planter Word...

J'ai le message "Machin.doc est un document principal de fusion. Impossible
de trouver sa source de données, Liste.doc"...

Comment empêcher un tel blocage... tout en laissant l'application Word
invisible ?

Voici à quoi ressemble ma macro :

Set wd = CreateObject("word.application")
wd.Visible = False

Faire
wd.DisplayAlerts = False
Set doc = wd.Documents.Open(FileName:=prerep & NomFic,
ConfirmConversions:=False, ReadOnly:=False)
wd.DisplayAlerts = False
doc.PrintOut
NomFic = fichiersuivant
Jusqu'à NomFic = ""

Merci d'avance pour votre aide.
--
@+
HD

3 réponses

Avatar
Jean-Claude
Bonjour,
Avec une ligne
On Error Resume Next
placée en début de sub
Es-ce-que le blocage persiste?
A+
Jc
"HD" a écrit dans le message de
news:%23BVmY36$
Bonjour,

Sur Excel j'ai une macro qui effectue une boucle pour imprimer une série
de

fichier Excel et Word... Mon problème est que ma boucle bloque sur un
document Word et pour la débloquer je suis obligé de faire un ctrl + alt +
suppr pour planter Word...

J'ai le message "Machin.doc est un document principal de fusion.
Impossible

de trouver sa source de données, Liste.doc"...

Comment empêcher un tel blocage... tout en laissant l'application Word
invisible ?

Voici à quoi ressemble ma macro :

Set wd = CreateObject("word.application")
wd.Visible = False

Faire
wd.DisplayAlerts = False
Set doc = wd.Documents.Open(FileName:=prerep & NomFic,
ConfirmConversions:úlse, ReadOnly:úlse)
wd.DisplayAlerts = False
doc.PrintOut
NomFic = fichiersuivant
Jusqu'à NomFic = ""

Merci d'avance pour votre aide.
--
@+
HD




Avatar
HD
On Error Resume Next
placée en début de sub


J'ai déja cette ligne qui il est vrai corrige permet souvent de passer outre
certains messages... Mais mon problème est plus lié à la réaction d'un
fichier Word de fusion ouvert par VBA... et Word n'a que faire de mon
DisplayAlert = False...

J'ai le message "Machin.doc est un document principal de fusion.
Impossible de trouver sa source de données, Liste.doc"...
Comment empêcher un tel blocage... tout en laissant l'application
Word invisible ?
Voici à quoi ressemble ma macro :
Set wd = CreateObject("word.application")
wd.Visible = False

Faire
wd.DisplayAlerts = False
Set doc = wd.Documents.Open(FileName:=prerep & NomFic,
ConfirmConversions:úlse, ReadOnly:úlse)
wd.DisplayAlerts = False
doc.PrintOut
NomFic = fichiersuivant
Jusqu'à NomFic = ""



--
@+
HD


Avatar
Clément Marcotte
et Word n'a que faire de mon
DisplayAlert = False...


Dans l'aide de Word:

Début de copie:

DisplayAlerts, propriété
Voir aussi S'applique à Exemple Particularités
Renvoie ou définit la façon dont certains messages et alertes sont
gérés pendant l'exécution d'une macro. Argument WdAlertLevel en
lecture-écriture.

Les constantes WdAlertLevel possibles sont les suivantes :
wdAlertsAll Toutes les alertes et boîtes de message sont affichées ;
les erreurs sont renvoyées à la macro.
wdAlertsMessageBox Seules des boîtes de message sont affichées ; les
erreurs sont interceptées et renvoyées à la macro.
wdAlertsNone Aucune alerte ou boîte de message affichées. Si une macro
rencontre une boîte de message, la valeur par défaut est affectée, et
la macro poursuit son exécution.

expression.DisplayAlerts

expression Obligatoire. Expression qui renvoie l’un des objets de la
liste S’applique à.

Remarque Si vous affectez la constante wdAlertsNone ou
wdAlertsMessageBox à cette propriété, Word ne lui réaffecte pas la
constante wdAlertsAll à la fin de l'exécution de la macro. Ecrivez
toujours vos macros de manière à réaffecter la constante wdAlertsAll à
la propriété DisplayAlerts quand leur exécution prend fin.

Exemple
Cet exemple montre comment configurer Word de sorte qu'il affiche
toutes les alertes et boîtes de message appropriées pendant
l'exécution des macros.

Application.DisplayAlerts = wdAlertsAll
Cet exemple montre comment renvoyer la valeur actuelle de la propriété
DisplayAlerts.

Dim lngTemp As Long

lngTemp = Application.DisplayAlerts

Fin de copie