OVH Cloud OVH Cloud

Problème Macro

4 réponses
Avatar
JER
Bonjour,

J'ai un problème currieux.

J'ai créé une macro qui a pour but de lancer une fusion vers un nouveau
document à partir de mon doc principal et de fermer le doc principal sans
enregistrement de modification.

Voici mon code:

Sub autoopen()
'
' autoopen Macro
' Macro créée le 20/09/2004 par JER
'
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = False
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Windows(1).Activate
ActiveDocument.Close no
End Sub

En fait cette macro marche très bien à condition que le nom de mon document
pricipal ne commence pas par certaines lettres.

Exemple:

Si le doc se nomme 'Copie de variables.doc' cela marche, il me reste donc
ouvert mon doc lettre type1.

Mais si mon doc se nomme 'toto de variables.doc', lettre type1 se ferme et
le doc principal donc non fusionné reste ouvert.

??????

J'ai fait le test sur plusieurs versions de word c'est toujours pareil.

Merci d'avance pour votre aide.

Jer.

4 réponses

Avatar
Anacoluthe
Bonjour !

Ni bug, ni curiosité. C'est logique :
Windows(1).Activate : vous activez la /1ère/ fenêtre donc
si votre document principal est avant 'Lettre 1.doc' ce sera lui
s'il est après ce sera 'lettre1.doc' qui sera activée et fermée.
Utilisez plutôt les /noms/ des documents que leurs indices !!!

Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL


'JER' nous a écrit ...
Bonjour,

J'ai un problème currieux.

J'ai créé une macro qui a pour but de lancer une fusion vers un nouveau
document à partir de mon doc principal et de fermer le doc principal sans
enregistrement de modification.

Voici mon code:

Sub autoopen()
'
' autoopen Macro
' Macro créée le 20/09/2004 par JER
'
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = False
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:úlse
End With
Windows(1).Activate
ActiveDocument.Close no
End Sub

En fait cette macro marche très bien à condition que le nom de mon document
pricipal ne commence pas par certaines lettres.

Exemple:

Si le doc se nomme 'Copie de variables.doc' cela marche, il me reste donc
ouvert mon doc lettre type1.

Mais si mon doc se nomme 'toto de variables.doc', lettre type1 se ferme et
le doc principal donc non fusionné reste ouvert.

??????

J'ai fait le test sur plusieurs versions de word c'est toujours pareil.

Merci d'avance pour votre aide.

Jer.




Avatar
JER
Merc, mais le problème est que le nom de mon doc change, donc pour faire
cela il faudrait que je récupère le nom e mon doc principal à l'ouverture de
word mais je ne sais pas mettre le code en plac.

Merci d'avance.

Jer.


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

Bonjour !

Ni bug, ni curiosité. C'est logique :
Windows(1).Activate : vous activez la /1ère/ fenêtre donc
si votre document principal est avant 'Lettre 1.doc' ce sera lui
s'il est après ce sera 'lettre1.doc' qui sera activée et fermée.
Utilisez plutôt les /noms/ des documents que leurs indices !!!

Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL


'JER' nous a écrit ...
Bonjour,

J'ai un problème currieux.

J'ai créé une macro qui a pour but de lancer une fusion vers un nouveau
document à partir de mon doc principal et de fermer le doc principal sans
enregistrement de modification.

Voici mon code:

Sub autoopen()
'
' autoopen Macro
' Macro créée le 20/09/2004 par JER
'
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = False
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:úlse
End With
Windows(1).Activate
ActiveDocument.Close no
End Sub

En fait cette macro marche très bien à condition que le nom de mon
document pricipal ne commence pas par certaines lettres.

Exemple:

Si le doc se nomme 'Copie de variables.doc' cela marche, il me reste donc
ouvert mon doc lettre type1.

Mais si mon doc se nomme 'toto de variables.doc', lettre type1 se ferme
et le doc principal donc non fusionné reste ouvert.

??????

J'ai fait le test sur plusieurs versions de word c'est toujours pareil.

Merci d'avance pour votre aide.

Jer.




Avatar
Anacoluthe
Bonjour !

'JER' nous a écrit ...
Merc, mais le problème est que le nom de mon doc change, donc pour faire
cela il faudrait que je récupère le nom e mon doc principal à l'ouverture de
word mais je ne sais pas mettre le code en plac.


Utilisez alors une variable !
Avant la fusion :
MonPrincipal = ActiveDocument.Name
Après la fusion, remplacez votre Windows(1).Activate par
Windows(MonPrincipal).Activate

Ceci dit, il n'est pas du tout nécessaire d'activer un document
pour le fermer..... :-)
Dim Principal as Document
Set Principal = ActiveDocument
...
Principal.Close


Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL

Avatar
JER
Merci beaucoup.

Cela marche parfaitement.

A+

Jer

"Anacoluthe" a écrit dans le message de news:
%
Bonjour !

'JER' nous a écrit ...
Merc, mais le problème est que le nom de mon doc change, donc pour faire
cela il faudrait que je récupère le nom e mon doc principal à l'ouverture
de word mais je ne sais pas mettre le code en plac.


Utilisez alors une variable !
Avant la fusion :
MonPrincipal = ActiveDocument.Name
Après la fusion, remplacez votre Windows(1).Activate par
Windows(MonPrincipal).Activate

Ceci dit, il n'est pas du tout nécessaire d'activer un document
pour le fermer..... :-)
Dim Principal as Document
Set Principal = ActiveDocument
...
Principal.Close


Anacoluthe
« Pourquoi faire simple quand on peut faire compliqué ? »
- Jacques ROUXEL