J'ai bien cherché dans le forum et dans l'aide de VBA, mais je désespère d'arriver à maitriser "l'habillage" des images collées sous Word, pour que les images soient alignées sur le texte au lieu d'être devant le texte (je pars d'une sélection sous Excel). Et pas moyen d'enregistrer la commande avec l'enregistreur de Macro, car cette option dans le format de l'image est grisée en mode enregistrement de Macro .
J'arrive à coller des tableaux Excel dans un fichier Word avec les lignes suivantes
Code:
Dim AppWord As Word.Application
Dim DocWord As Word.Document
Set AppWord = New Word.Application
AppWord.Visible = True
Set DocWord = AppWord.Documents.Add
...
Selection.Copy
With AppWord.Selection
.PasteSpecial DataType:=wdPasteEnhancedMetafile
.InsertBreak Type:=wdPageBreak
End With
Quelqu'un saurait-il quel paramètre ajouter dans le PasteSpecial pour l'alignement sur le texte?
Et puis j'ai un autre problème avec le fichier Normal.dot... Quand je ferme le fichier Word, j'ai un message d'erreur car le fichier Normal.dot est déjà en cours d'utilisation et puis un deuxième message pour me demander d'enregistrer le nouveau Normal.dot. Comment éviter ces messages?
à tester, à la fin du code pour le collage spécial :
Code:
With AppWord.Selection
.PasteSpecial DataType:=wdPasteEnhancedMetafile, Link:=False, Placement:= _
wdInLine, DisplayAsIcon:=False
.InsertBreak Type:=wdPageBreak
End With
Génial!! On a bien des images alignées sur le texte. Merci Tototiti2008 !!
Saurais-tu quoi faire pour le message en fermant Word "Fichier utilisé par un autre utilisateur ou une autre application. (C:\..`\Normal.dot)"
Je fais OK et j'ai un enregistrer sous pour Normal.dot et si j'essaie d'enregistrer, j'ai un message me disant qu'il est lecture seule..
Je suis un peu perdu avec ce Normal.dot
En fait mon problème de normal.dot se produit quand j'ai déjà un document Word ouvert et je pense que cela vient de l'instruction
Set AppWord = New Word.Application
Si j'enlève le New quand j'ai un document d'ouvert, cela passe.
Maintenant mon problème est que je voudrais que ma macro s'exécute aussi bien quand Word est déjà lancé ou non.
J'ai essayé sans succès le code suivant, c'est-à-dire que j'ai toujours les messages pour enregistrer Normal.dot, que Word soit déjà ouvert ou non. Y'a peut-être plus simple...
Code:
Dim AppWord As Word.Application
Dim DocWord As Word.Document
On Error GoTo TraiteErreur
Set AppWord = Word.Application
TraiteErreur:
Set AppWord = New Word.Application
On Error GoTo 0
AppWord.Visible = True
Set DocWord = AppWord.Documents.Add
Dim AppWord As Word.Application
Dim DocWord As Word.Document
On Error GoTo TraiteErreur
Set AppWord = Word.Application
On Error GoTo 0
AppWord.Visible = True
Set DocWord = AppWord.Documents.Add
...
Exit Sub
TraiteErreur:
Set AppWord = New Word.Application
resume next
End Sub
Super merci, je vais tester. Entre temps, je pensais aussi m'orienter vers des boutons d'options (nouveau ou actif) et utiliser if then...
J'ai un autre petit problème, pour insérer du texte dans word juste à l'endroit ou on se trouve dans le fichier. J'ai trouvé dans les Wiki
With wordDoc.Content
.Collapse Direction:=wdCollapseEnd 'derniere ligne du document
.insertBreak Type:=wdLineBreak 'insert saut de ligne
.Text = "Le texte à ajouter"
End With
Mais je n'arrive à pas à utiliser ce code pour ne pas aller en fin de document. Comme je colle une succession de tableaux sous Word, je voudrais entre chaque pouvoir insérer une variable indiquant quelle portion d'Excel est collée...