Bonjour à tous, je me présente je suis nouveau sur le forum. J'ai lu pas mal de vos posts quand j'avais des problèmes et je sais que sur ce forum il y a des gens compétents qui apportent des réponses pertinentes. C'est pourquoi j'ai décidé de m'inscrire pour pouvoir vous faire part de mon problème.
Le but de ma démarche est de créer un programme VBA me permettant de copier l'adresse postale et le nom d'une personne sur une lettre type sous format word. Ainsi, dans une colonne Excel j'ai le nom que je veux donner à mon fichier word, dans une autre l'adresse postale et dans une dernière le nom de la personne.
J'ai créé un code (je suis débutant en vba) qui fonctionne pour la première lettre (c'est-à-dire i=2 dans ma boucle) puisque le nouveau fichier word est bien créé, etc. Le problème est que j'obtiens une erreur (erreur automation l'objet invoqué s'est déconnecté de ses clients) quand il veut passer à la personne suivante (i=3).
Je vous fais une copie de mon code pour que vous y voyez plus clair.
Le débogage s'arrête à la ligne
Sinon pour un peu plus d'explication concernant mon code, la variable n fait référence à une cellule qui compte le nombre de noms que le programme doit traiter. Ainsi j'ai mis une formule nbval afin de me compter ce nombre. Au moins, si je dois rajouter des noms ca se mettra à jour.
Voilà, j'ai essayé beaucoup de choses, notamment de le faire sur une version d'excel antérieure ou sur un windows XP mais rien n'y fait j'ai toujours la même erreur.
Merci d'avance pour vos réponses qui je l'espère m'aideront à résoudre mon problème,
Wal23.
Le but de ma démarche est de créer un programme VBA me permettant de copier l'adresse postale et le nom d'une personne sur une lettre type sous format word. Ainsi, dans une colonne Excel j'ai le nom que je veux donner à mon fichier word, dans une autre l'adresse postale et dans une dernière le nom de la personne.
J'ai créé un code (je suis débutant en vba) qui fonctionne pour la première lettre (c'est-à-dire i=2 dans ma boucle) puisque le nouveau fichier word est bien créé, etc. Le problème est que j'obtiens une erreur (erreur automation l'objet invoqué s'est déconnecté de ses clients) quand il veut passer à la personne suivante (i=3).
Je vous fais une copie de mon code pour que vous y voyez plus clair.
Code:
Sub fournisseur()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Integer
Dim n As Integer
Set WordApp = CreateObject("word.application") 'ouvre session word et le fichier voulu
Set WordDoc = WordApp.Documents.Open("C:\Users\wal23\Desktop\Lettre type.docx") 'ouvre document Word
WordApp.Visible = False 'word masqué pendant l'operation
n = Cells(19, 5)
For i = 2 To n
nom = Cells(i, 1).Value 'repere le nom du nouveau fichier dans la cellule
'dans le document word, il faut avoir placé des signets aux endroits qu'on veut remplir
'à l'endroit de chaque signet qui se trouve dans le fichier word on va inscrire le contenu des cellules
WordDoc.Bookmarks("adresse_fournisseur").Range.Text = Cells(i, 2)
WordDoc.Bookmarks("contact_fournisseur").Range.Text = Cells(i, 3)
WordApp.Visible = True 'affiche le document Word
ActiveDocument.SaveAs "C:\Users\wal23\Desktop\Lettres fournisseurs\" & nom & ".docx"
ActiveDocument.Close
WordApp.Quit 'ferme la session Word
Set WordApp = Nothing
Next
Set nom = Nothing
End Sub
Le débogage s'arrête à la ligne
Code:
WordDoc.Bookmarks("adresse_fournisseur").Range.Text = Cells(i, 2)
Sinon pour un peu plus d'explication concernant mon code, la variable n fait référence à une cellule qui compte le nombre de noms que le programme doit traiter. Ainsi j'ai mis une formule nbval afin de me compter ce nombre. Au moins, si je dois rajouter des noms ca se mettra à jour.
Voilà, j'ai essayé beaucoup de choses, notamment de le faire sur une version d'excel antérieure ou sur un windows XP mais rien n'y fait j'ai toujours la même erreur.
Merci d'avance pour vos réponses qui je l'espère m'aideront à résoudre mon problème,
Wal23.
Dernière édition: