OVH Cloud OVH Cloud

Ecrire dans un .doc existant

8 réponses
Avatar
Alain
Bonsoir,

Quelle galère ! Je ne parviens pas par VBA à écrire dans un document Word
existant ; Je suis bien allé voir sur le site
http://dj.joss.free.fr/word.htm (rubrique Excel et Word) mais n'y trouve pas
mon bonheur :-(

J'ai essayé plein de 'trucs' : le plus tordu à peut-être été ... je ne vous
le dis même pas !

A la base créé doc.doc ET doc.txt (sensés contenir les mêmes infos pour
tests / cf plus haut) - Pour doc.txt, ça ronronne (méthode Append) - Pour
doc.doc toujours le même problème de codage de fichier (1 ko à l'origine - la
taille d'un fichier texte). Certainement pas la même méthode ...

A l'aide SVP (je redeviens poli ... si mon PC pouvait parler ...)
Comme j'aimerais donc avoir le code pour pouvoir écrire une chaine nommée
MyString à la fin d'un fichier word nommé Rapport.doc ... Et sans vouloir
abuser, le code pour créer automatiquement Rapport.doc ...

Merci aux spécialistes et acharnés qui auront pitié de moi et de mes yeux
presque aussi grands que mon écran 17" dalle platte (sur laquelle je m'écrase
passablement le nez...)

Au plaisir salvateur de vous lire,

8 réponses

Avatar
ClémentMarcotte
Bonjour,

Sub OuvrirWordAvecExcel()
Dim appword As Object
On Error GoTo piegeerreur
'Essaie de récupérer l'instance de Word
'active au cas où Word serait ouvert
'Si Word n'est pas ouvert, cela génère
'l'erreur numéro 429
'Dans ce cas, c'est le gestionnaire d'erreur "piegeerreur"
'qui prend le relais et qui ouvre Word
Set appword = GetObject(, "Word.Application")
appword.Visible = True
appword.Documents.Add
appword.Selection.EndKey Unit:=wdStory
appword.Selection.TypeText Text:="reeeeeeee"
appword.ActiveDocument.SaveAs "LeNouveauDocument.doc"
'Sortie de routine, pour éviter le gestionnaire d'erreurs
Exit Sub
'Gestionnaire d'erreurs
piegeerreur:
Select Case Err.Number
Case 429
'Word n'est pas ouvert
'Ouverture de Word et reprise
'du programme à la ligne suivant
'celle où s'est produit l'erreur
Set appword = CreateObject("Word.Application")
Resume Next
Case 5153
'Le fichier "DOC" existe déjà.
'Fin du programme.
'Au lieu de terminer le programme, on pourrait
'mettre à laplace la possibilité de changer le
'nom du fichier, mais là, je n'ai pas le temps
MsgBox "Le fichier existe déjà. Fin du programme et retour à
Word"
Case Else
MsgBox "Erreur imprévue. Fin du programme et retour à Word"
End
End Select
End Sub
"Alain" a écrit dans le message de
news:
Bonsoir,

Quelle galère ! Je ne parviens pas par VBA à écrire dans un document Word
existant ; Je suis bien allé voir sur le site
http://dj.joss.free.fr/word.htm (rubrique Excel et Word) mais n'y trouve
pas

mon bonheur :-(

J'ai essayé plein de 'trucs' : le plus tordu à peut-être été ... je ne
vous

le dis même pas !

A la base créé doc.doc ET doc.txt (sensés contenir les mêmes infos pour
tests / cf plus haut) - Pour doc.txt, ça ronronne (méthode Append) - Pour
doc.doc toujours le même problème de codage de fichier (1 ko à l'origine -
la

taille d'un fichier texte). Certainement pas la même méthode ...

A l'aide SVP (je redeviens poli ... si mon PC pouvait parler ...)
Comme j'aimerais donc avoir le code pour pouvoir écrire une chaine nommée
MyString à la fin d'un fichier word nommé Rapport.doc ... Et sans vouloir
abuser, le code pour créer automatiquement Rapport.doc ...

Merci aux spécialistes et acharnés qui auront pitié de moi et de mes yeux
presque aussi grands que mon écran 17" dalle platte (sur laquelle je
m'écrase

passablement le nez...)

Au plaisir salvateur de vous lire,


Avatar
Alain
Merci pour votre réponse,

Pour la partie création de document, ça marche. Mais je continue à me battre
pour aller écrire à la fin du document ...

J'ai tenté de créer une macro sous word :
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.Paste
Selection.TypeParagraph
ActiveDocument.Save
Application.Quit
Mais je ne parviens pas à l'exécuter automatiquement dès l'ouverture du
document. Il est vrai que je ne suis pas spécialiste de Word ... Où dois-je
mettre ces instructions, si tant est que ce soient les bonnes ? L'idéal
serait encore de coder directement cela sous Excel / j'avais pensé à quelque
chose comme document.activate (pour mettre le focus sur le document) et un
bloc with, ou encore un run macro ... Dur pour quelqu'un qui pratique Excel
et Access ...

J'ai aussi cherché sans succès l'expression pour copier une chaine
("xxxxxxx") dans le presse papier.

Si vous pouviez m'aider, ce serait magnifique !

Merci d'avance
Avatar
ClémentMarcotte
Bonjour,

Sub OuvrirWordAvecExcel1()
Dim appword As Object, lesdocuments As Object, ledoc As Object
Dim i As Byte
On Error GoTo piegeerreur
'Essaie de récupérer l'instance de Word
'active au cas où Word serait ouvert
'Si Word n'est pas ouvert, cela génère
'l'erreur numéro 429
'Dans ce cas, c'est le gestionnaire d'erreur "piegeerreur"
'qui prend le relais et qui ouvre Word
Set appword = GetObject(, "Word.Application")
appword.Visible = True
'ouvrir 3 documents Word
appword.Documents.Open "C:Mes DocumentsLa vodka du curé.doc"
appword.Documents.Open "C:Mes DocumentsMAPI.DOC"
appword.Documents.Open "C:Mes DocumentsCOMMENT FAIRE.doc"
'Parcourir la collection Documents et écrire un texte différent
'à la fin de chaque document
Set lesdocuments = appword.Documents
For Each ledoc In lesdocuments
If ledoc.Name = "La vodka du curé.doc" Then
'Écrire "C'est fini" à la fin du document "La vodka du curé.doc"
ledoc.Select
appword.Selection.EndKey Unit:=wdStory
appword.Selection.InsertParagraph
appword.Selection.InsertAfter "C'est fini"
ledoc.Save
ElseIf ledoc.Name = "MAPI.DOC" Then
'Écrire "Fin du texte" à la fin du document "MAPI.DOC"
ledoc.Select
appword.Selection.EndKey Unit:=wdStory
appword.Selection.InsertParagraph
appword.Selection.InsertAfter "Fin du texte"
ledoc.Save
Else
'Écrire "Bonjour" à la fin du document "COMMENT FAIRE.doc"
ledoc.Select
appword.Selection.EndKey Unit:=wdStory, Extend:=wdMove
appword.Selection.InsertParagraph
appword.Selection.InsertAfter "Bonjour"
ledoc.Save
End If
Next
'Fermer les documents
For Each ledoc In lesdocuments
ledoc.Close
Next
'Fermer Word
appword.Quit
'Sortie de routine, pour éviter le gestionnaire d'erreurs
Exit Sub
'Gestionnaire d'erreurs
piegeerreur:
Select Case Err.Number
Case 429
'Word n'est pas ouvert
'Ouverture de Word et reprise
'du programme à la ligne suivant
'celle où s'est produit l'erreur
Set appword = CreateObject("Word.Application")
Resume Next
Case 5153
'Le fichier "DOC" existe déjà.
'Fin du programme.
'Au lieu de terminer le programme, on pourrait
'mettre à laplace la possibilité de changer le
'nom du fichier, mais là, je n'ai pas le temps
MsgBox "Le fichier existe déjà. Fin du programme et retour à
Word"
Case Else
MsgBox "Erreur imprévue. Fin du programme et retour à Word"
End
End Select
End Sub

"Alain" a écrit dans le message de
news:
Merci pour votre réponse,

Pour la partie création de document, ça marche. Mais je continue à me
battre

pour aller écrire à la fin du document ...

J'ai tenté de créer une macro sous word :
Selection.EndKey Unit:=wdStory
Selection.TypeParagraph
Selection.Paste
Selection.TypeParagraph
ActiveDocument.Save
Application.Quit
Mais je ne parviens pas à l'exécuter automatiquement dès l'ouverture du
document. Il est vrai que je ne suis pas spécialiste de Word ... Où
dois-je

mettre ces instructions, si tant est que ce soient les bonnes ? L'idéal
serait encore de coder directement cela sous Excel / j'avais pensé à
quelque

chose comme document.activate (pour mettre le focus sur le document) et un
bloc with, ou encore un run macro ... Dur pour quelqu'un qui pratique
Excel

et Access ...

J'ai aussi cherché sans succès l'expression pour copier une chaine
("xxxxxxx") dans le presse papier.

Si vous pouviez m'aider, ce serait magnifique !

Merci d'avance



Avatar
Alain
..: Merci Infiniment :..

Du pur sucre ! Extraordinaire ! Documenté avec ça !

Mais pauvre curé, maintenant qu'il a fini sa vodka ;-)
Et dites-moi : "La vodka du curé" ... Une chanson plus ou moins correcte ?

Oserais-je une question subsidiaire : Pouvez-vous m'indiquer un(des) site(s)
/ aussi didactiques que possibles pour continuer mon apprentissage en la
matière ... Peut être le vôtre ...

Merci encore mille fois

Bien à Vous

Alain
Avatar
ClémentMarcotte
Bonjour,

Et dites-moi : "La vodka du curé" ... Une chanson plus ou moins correcte ?


En fait, c'est une blague que l'avais recopiée dans un document Word. Pour
l'original:

http://planete.qc.ca/blague/blague-132005-85929.html

Oserais-je une question subsidiaire : Pouvez-vous m'indiquer un(des)
site(s)

/ aussi didactiques que possibles pour continuer mon apprentissage en la
matière ... Peut être le vôtre ...


Je n'ai pas de site. À vrai dire, je ne connais pas de site sur VBA pour
Word. Il y a bien un petit bouquin chez Microsoft Press : "Formation à VBA
pour Microsoft Word, Excel et Access" de Dominique Maniez. Il est bien pour
Word, insuffisant pour Excel et pourri pour Access.

Il y a aussi une section Office development sur le site MSDN:

http://msdn.microsoft.com

mais, pour Word, il n'y a pas grand chose.

"Alain" a écrit dans le message de
news:
..: Merci Infiniment :..

Du pur sucre ! Extraordinaire ! Documenté avec ça !

Mais pauvre curé, maintenant qu'il a fini sa vodka ;-)


Merci encore mille fois

Bien à Vous

Alain


Avatar
Alain
Bonsoir Clément,

Pour "La vodka du curé", une certaine chanson qui vantait les mérites de la
riante cité de Camarais m'a traversé l'esprit (Pardon Seigneur - dixit Dom
Camillo / Je suis croyant ceci dit, hein ?)

Pour le reste, ma foi (sans jeu de mot), je ne peux que vous féliciter et
vous remercier pour votre "valuable help" et vos conseils avisés ... Et quant
à votre site, il est vrai que cela est plus facile à conseiller qu'à s'y
investir soi-même (cf. remarquable travail de Raymond pour Access), mais vous
en avez, à mon sens, très largement les compétences !

Bien amicalement,

Et peut-être à bientôt dans ces colonnes
Avatar
ClémentMarcotte
Bonjour,

Pour Word, il y a quand même la FAQ de , avec quelques programmes VBA
et une "initiation" à VBA par anacoluthe.

http://faqword.free.fr/

Mais, ce n'est effectivement pas un site sur VBA pour Word

"Alain" a écrit dans le message de
news:
Bonsoir Clément,

Pour "La vodka du curé", une certaine chanson qui vantait les mérites de
la

riante cité de Camarais m'a traversé l'esprit (Pardon Seigneur - dixit Dom
Camillo / Je suis croyant ceci dit, hein ?)

Pour le reste, ma foi (sans jeu de mot), je ne peux que vous féliciter et
vous remercier pour votre "valuable help" et vos conseils avisés ... Et
quant

à votre site, il est vrai que cela est plus facile à conseiller qu'à s'y
investir soi-même (cf. remarquable travail de Raymond pour Access), mais
vous

en avez, à mon sens, très largement les compétences !

Bien amicalement,

Et peut-être à bientôt dans ces colonnes


Avatar
Alain
Info reçue !

Merci bien encore - Je vais visiter le site ...

@ bientôt

'Dom Camillo
(je vais peut-être changer de pseudo)