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

Vba: "il" ne veut plus enregistrer le doc word que j'ai créé...

12 réponses
Avatar
Jac
Bonjour à tous,

depuis le vba d'XL, j'ouvre un modèle Word et je l'enregistre.
----------------------------------
...
Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Add(ActiveWorkbook.Path & "\Origine.dot")
NOUVEAU_FICHIER = ActiveWorkbook.Path & "\test.doc"
Dc.SaveAs Filename:=NOUVEAU_FICHIER, FileFormat:=wdFormatDocument
Set Dc = Nothing: Set Wd = Nothing
...
-----------------------------------
Ça a fonctionné, mais maintenant, quand c'est le moment d'enregistrer, j'ai
droit à un laconique "Variable objet ou variable de bloc With non définie".
Microsoft Word 10.0 Object library est bien activé dans les références Vba.

Que dois-je faire pour que ça refonctionne ?

Merci d'avance.

Jac

2 réponses

1 2
Avatar
Jac
Pour ce qui est d'office, il s'agit de XP SP3.
Dans Word, aucun souci : j'ouvre mon .dot en créant un .doc avec les macros
à la création du .doc et quand je veux l'enregistrer, aucun problème.
Donc ça me semble bon du côté Word...


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

A ) Ton problème est lié à Word => Il y a un forum à cet effet.

B ) Je n'ai pas de fichier modèle Word qui ressemble à ton fichier
pour effectuer des tests

C ) Est-ce que ta version Microsoft Office est à jour ou est-ce un bug ?




"Jac" a écrit dans le message de news:
%
Bonjour MichDenis,

j'ai suivi tes conseils et ça fonctionne parfaitement avec des petits .dot
de test.
Mais quand je lance le vrai .dot avec 9 pages, une cinquantaine de champs
de
fusion sur un seul enregistrement (xls) et quelques manipulation par
marcro
word à la création d'un nouveau doc basé sur le dot (réattachement de la
base de données, transformation des champs calculés en texte, traitement
des
dates pour passer le "er" de 1er en exposant, ...).
Le .dot s'ouvre et après toutes les manips, Excel annonce une erreur
d'exécution '13' : Incompatibilité de type. Je l'ai contournée avec un "On
error resume next" suivi d'un "On error goto 0", mais quand arrive le
moment
d'enregistrer le doc qui est parfaitement fonctionnel, le Vba d'Excel me
renvoie une erreur d'exécution '424' : Objet requis.

Et là, je coince une peu...

"MichDenis" a écrit dans le message de news:
%
Essaie ceci : Il n'y a aucune raison que cela ne fonctionne pas.

Ce type de code fait référence à une liaison tardive (au moment
de l'exécution) avec l'application Word. Conséquemment, ne
déclare pas la référence Word dans la fenêtre Références de
l'éditeur de code... cette procédure pourra s'exécuter peu importe
la version d'excel installée sur l'ordinateur.

'-----------------------------
Sub test()
Dim Wd As Object, Dc As Object
Dim Chemin As String, Fichier As String
'Ton classeur se doit d'avoir été enregistré au moins une fois.
Chemin = ThisWorkbook.Path & ""
Fichier = "Origine.dot"

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Add(Chemin & Fichier)
NOUVEAU_FICHIER = Chemin & "test.doc"
Dc.SaveAs NOUVEAU_FICHIER
Set Dc = Nothing: Set Wd = Nothing
End Sub
'-----------------------------





"Jac" a écrit dans le message de news:
%
C'est même pas ça : en faisant tourner la macro pas à pas, je perds le
focus
sur le fichier Word, donc quand il s'agit d'enregistrer, Excel ne sait
plus
où il en est !!!

Donc même si le code est bon, ça peut ne pas fonctionner. C'est tout de
même
un comble... que de chercher l'erreur dans une syntaxe qui est
rigoureusement juste !!!
Et de plus, qui fonctionne dans certains cas (C:...).

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

Ça y est ! Je n'ai pas encore la solution, mais le problème est lié au
chemin d'accès à mon modèle car quand j'ouvre un modèle situé à la
racine
du C, ça se passe sans grincements de dents.

Merci encore pour ta contribution.

Jac

"Jac" a écrit dans le message de news:
%
Eh oui, la macro seule dans un nouveau fichier fonctionne et quand je
rappatrie les feuilles et les macros, ça marche encore. Je ne comprends
plus très bien ce disfonctionnement...
Je vais revoir le calcul des chemins d'accès... qui est un peu plus
complexe que dans le modèle...

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

Rebonjours à toi

Il faut cerner l'origine de l'anomalie

Si je comprends bien ta macro seule dans un nouveau document
fonctionne
Tu me confirmes ???

Dans cet hypothèse je partirai de cette base et reprendrai une par une
dans
ce nouveau classeur les différentes composantes de celui d'origine en
testant
entre chacune d'elles l'état de fonctionnement la macro
Celà devrait cerner normalement le coupable

Réalises l'opération et donnes nous le résultat


J'ai repris toutes mes feuilles et toutes mes macros dans un nouveau
classeur, j'ai réactivé Microsoft Word 10.0 Object library et je
retombe sur
le même message "Variable... non définie".
Pourquoi il s'acharne comme celà ???


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

Merci FFO,
c'est vrai que dans un nouveau fichier Excel, ça fonctionne
parfaitement.
Que dois-je faire dans mon classeur de travail pour qu'il en soit
de
même
? (10 feuilles, 40 macros, ...)

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

Bonjours Jac
Ton code chez moi fonctionne bien
Je me hasarde une idée
Essaies ton code dans un document Excel vierge peut être sera t'il
plus
coopératif et d'incrimer l'intégriter de celui existant

Toujours à tenter


Bonjour à tous,

depuis le vba d'XL, j'ouvre un modèle Word et je l'enregistre.
----------------------------------
....
Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Add(ActiveWorkbook.Path &
"Origine.dot")
NOUVEAU_FICHIER = ActiveWorkbook.Path & "test.doc"
Dc.SaveAs Filename:=NOUVEAU_FICHIER,
FileFormat:=wdFormatDocument
Set Dc = Nothing: Set Wd = Nothing
....
-----------------------------------
Ça a fonctionné, mais maintenant, quand c'est le moment
d'enregistrer,
j'ai
droit à un laconique "Variable objet ou variable de bloc With non
définie".
Microsoft Word 10.0 Object library est bien activé dans les
références
Vba.

Que dois-je faire pour que ça refonctionne ?

Merci d'avance.

Jac





















Avatar
MichDenis
Tu peux m'envoyer ton fichier modèle Word dans ma BAL
pour des tests... sinon je ne peux rien faire de plus.


"Jac" a écrit dans le message de news: %
Pour ce qui est d'office, il s'agit de XP SP3.
Dans Word, aucun souci : j'ouvre mon .dot en créant un .doc avec les macros
à la création du .doc et quand je veux l'enregistrer, aucun problème.
Donc ça me semble bon du côté Word...


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

A ) Ton problème est lié à Word => Il y a un forum à cet effet.

B ) Je n'ai pas de fichier modèle Word qui ressemble à ton fichier
pour effectuer des tests

C ) Est-ce que ta version Microsoft Office est à jour ou est-ce un bug ?




"Jac" a écrit dans le message de news:
%
Bonjour MichDenis,

j'ai suivi tes conseils et ça fonctionne parfaitement avec des petits .dot
de test.
Mais quand je lance le vrai .dot avec 9 pages, une cinquantaine de champs
de
fusion sur un seul enregistrement (xls) et quelques manipulation par
marcro
word à la création d'un nouveau doc basé sur le dot (réattachement de la
base de données, transformation des champs calculés en texte, traitement
des
dates pour passer le "er" de 1er en exposant, ...).
Le .dot s'ouvre et après toutes les manips, Excel annonce une erreur
d'exécution '13' : Incompatibilité de type. Je l'ai contournée avec un "On
error resume next" suivi d'un "On error goto 0", mais quand arrive le
moment
d'enregistrer le doc qui est parfaitement fonctionnel, le Vba d'Excel me
renvoie une erreur d'exécution '424' : Objet requis.

Et là, je coince une peu...

"MichDenis" a écrit dans le message de news:
%
Essaie ceci : Il n'y a aucune raison que cela ne fonctionne pas.

Ce type de code fait référence à une liaison tardive (au moment
de l'exécution) avec l'application Word. Conséquemment, ne
déclare pas la référence Word dans la fenêtre Références de
l'éditeur de code... cette procédure pourra s'exécuter peu importe
la version d'excel installée sur l'ordinateur.

'-----------------------------
Sub test()
Dim Wd As Object, Dc As Object
Dim Chemin As String, Fichier As String
'Ton classeur se doit d'avoir été enregistré au moins une fois.
Chemin = ThisWorkbook.Path & ""
Fichier = "Origine.dot"

Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Add(Chemin & Fichier)
NOUVEAU_FICHIER = Chemin & "test.doc"
Dc.SaveAs NOUVEAU_FICHIER
Set Dc = Nothing: Set Wd = Nothing
End Sub
'-----------------------------





"Jac" a écrit dans le message de news:
%
C'est même pas ça : en faisant tourner la macro pas à pas, je perds le
focus
sur le fichier Word, donc quand il s'agit d'enregistrer, Excel ne sait
plus
où il en est !!!

Donc même si le code est bon, ça peut ne pas fonctionner. C'est tout de
même
un comble... que de chercher l'erreur dans une syntaxe qui est
rigoureusement juste !!!
Et de plus, qui fonctionne dans certains cas (C:...).

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

Ça y est ! Je n'ai pas encore la solution, mais le problème est lié au
chemin d'accès à mon modèle car quand j'ouvre un modèle situé à la
racine
du C, ça se passe sans grincements de dents.

Merci encore pour ta contribution.

Jac

"Jac" a écrit dans le message de news:
%
Eh oui, la macro seule dans un nouveau fichier fonctionne et quand je
rappatrie les feuilles et les macros, ça marche encore. Je ne comprends
plus très bien ce disfonctionnement...
Je vais revoir le calcul des chemins d'accès... qui est un peu plus
complexe que dans le modèle...

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

Rebonjours à toi

Il faut cerner l'origine de l'anomalie

Si je comprends bien ta macro seule dans un nouveau document
fonctionne
Tu me confirmes ???

Dans cet hypothèse je partirai de cette base et reprendrai une par une
dans
ce nouveau classeur les différentes composantes de celui d'origine en
testant
entre chacune d'elles l'état de fonctionnement la macro
Celà devrait cerner normalement le coupable

Réalises l'opération et donnes nous le résultat


J'ai repris toutes mes feuilles et toutes mes macros dans un nouveau
classeur, j'ai réactivé Microsoft Word 10.0 Object library et je
retombe sur
le même message "Variable... non définie".
Pourquoi il s'acharne comme celà ???


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

Merci FFO,
c'est vrai que dans un nouveau fichier Excel, ça fonctionne
parfaitement.
Que dois-je faire dans mon classeur de travail pour qu'il en soit
de
même
? (10 feuilles, 40 macros, ...)

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

Bonjours Jac
Ton code chez moi fonctionne bien
Je me hasarde une idée
Essaies ton code dans un document Excel vierge peut être sera t'il
plus
coopératif et d'incrimer l'intégriter de celui existant

Toujours à tenter


Bonjour à tous,

depuis le vba d'XL, j'ouvre un modèle Word et je l'enregistre.
----------------------------------
....
Set Wd = CreateObject("Word.Application")
Wd.Visible = True
Set Dc = Wd.Documents.Add(ActiveWorkbook.Path &
"Origine.dot")
NOUVEAU_FICHIER = ActiveWorkbook.Path & "test.doc"
Dc.SaveAs Filename:=NOUVEAU_FICHIER,
FileFormat:=wdFormatDocument
Set Dc = Nothing: Set Wd = Nothing
....
-----------------------------------
Ça a fonctionné, mais maintenant, quand c'est le moment
d'enregistrer,
j'ai
droit à un laconique "Variable objet ou variable de bloc With non
définie".
Microsoft Word 10.0 Object library est bien activé dans les
références
Vba.

Que dois-je faire pour que ça refonctionne ?

Merci d'avance.

Jac





















1 2