|
Publicité ' | ||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Dans une macro Word 2007 je souhaite ouvrir successivement des fichiers au format word 97.
La commande suivante fonctionne pour ouvrir un .docx: Code :
Quelqu'un a déjà rencontré ce problème? |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
tu est sur que ta macro s'arrête bien la ..? essai d'exécuter ton code pas à pas ..
__________________
page à bbil : dernières entrées : Débuter en VB6 Mes contributions en téléchargement Les pages VB : FAQs, Tutoriels VB, Outils , Sources, WIKI Impératif "A LIRE AVANT DE POSTER"
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Exécuté en pas à pas, le document s'affiche mais la macro est ensuite ré-initialisée (pointeur pas à pas sur l'instruction sub) ou en ajoutant une instruction MsgBox juste après cette commande, le message ne s'affiche pas.
L'insertion d'une instruction On error resume next n'a pas donné plus de résultat. Lorsque la cible est un .docx par contre le document s'ouvre et la message box s'affiche. J'ai essayé avec les différents valeurs possibles du paramètre format sans résultat. |
|
|
00
|
|
|
#4 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut JYG_perdu,
En fait, je pense que tu as un souci de scope de ta macro. Il faut bien comprendre comment ça fonctionne, c'est presque simple (en s'accrochant un peu) : Lorsqu'un fichier est ouvert, ses modèles actifs sont chargés et tu peux lancer des macros de ce modèle. Si ta macro ferme le fichier, elle ferme le modèle mais certains modèles sont privilégiés et restent en permanence et continuer de fonctionner toujours, c'est le cas de "Normal.dotm" pour Word 2007/2010 et de "Normal.dot" pour Word 97/2003 sur PC (sur Mac, c'est légèrement différent). Donc je pense que tu ouvres ton fichier 2007, que tu lis et que tu stockes le résultat en mémoire, pour l'exploiter dans une boucle ==> si tu as des fichiers Word 2007, c'est OK mais lorsque tu passes sur du Word 2003, tu perds ton scope, ou un truc de ce genre. Car c'est une supposition vu que l'on a pas ta macro. Si c'est le cas, c'est simple, ne ferme pas ton fichier initial comme ça tu ne perds pas son scope. Il suffit alors que tu travailles sur ActiveDocument, que tu ouvres (avec ta ligne de commande ça le fait) , que tu travaille sur ActiveDocument (qui entre temps a changé mais ce n'est pas grave), puis que tu le fermes et ton document initial redevient le ActiveDocument, tu finis ta boucle sur tous tes fichiers, puis tu fermes ton ActiveDocument (donc le initial) avec un qui quitte Word sans sauvegarder ton fichier initial et le tour est joué. @+ |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Merci Sepia pour ta réponse mais ...
![]() Le fichier contenant la macro n'est pas fermé (en fait dans la macro complète il n'est même jamais fermé, il doit l'être par l'utilsateur). Le fichier .doc ouvert ne contient pas de macro à exécution automatique. Donc s'il s'agit effectivement d'un pb de scope je ne vois pas ce qui pourrait être fait de plus pour ne pas perdre ce scope. Pour info dans ma macro la fonction suivant le open (qui ne me rend pas la main) était justement un document.activate qui n'est donc jamais exécuté. |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 332 ![]() |
Salut,
Pourrais-tu mettre tout ton code ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#7 | |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 6 ![]() |
Voici le code:
Citation:
La macro fonctionne avec un fichier .doc créé pour le besoin par contre avec le fichier que je veux ouvrir alors qu'il ne comporte aucune macro (ni dans le document ni dans un modèle sous-jacent) en éxécution pas à pas l'éditeur VBA se positionne dans le projet de ce fichier (Project (F2) / Modules/NewMacros). Je poursuis mes investigations. |
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : septembre 2011 Messages : 6 ![]() |
En fait dans les fichiers que je voulais ouvrir il n'y avait plus de Macro par contre dans la structure du projet il restait Project (F2)/Modules/NewMacros.
Le fait de supprimer dans l'arborescence projet NewMacros résoud mon problème. Merci à tous de m'avoir orienté vers la solution.
|
|
|
00
|
|
|
#9 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut JYG_perdu,
Content que tu aies réussi et que tu t'en sois sorti. Ce problème est assez complexe à expliquer @+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com