"Piloter" Word depuis Excel - 3ème partie (3/4)
Pour continuer, ce sujet : vos données sont maintenant transcrites dans votre document word, et un peu de mise en forme vous est nécessaire pour les mettre en valeur. Voyons plutôt.
Pour cette démonstration, on suppose que les données à transcrire sont la résultante de plusieurs données Xl.
Votre variable "Transit" sera à 2 dimensions et le texte à écrire pourrait être par exemple :
Texte_à_transcrire= "Article : " & Transit(1, i) & vbcr & Transit(2, i) & vbtab & Transit(3,i)
Vous noterez ici l'intégration de retour chariot "vbcr" pour mettre à la ligne et d'une tabulation "vbtab" pour laquelle il peut être prévu le positionnement préalable d'un taquet dans le document word "de base".
L'intégration de la ligne donnera donc :
With WordDoc.Tables(1)
For i = 1 To Nbdonnées
Texte_à_transcrire= "Article : " & Transit(1, i) & vbcr & Transit(2, i) & vbtab & Transit(3,i)
ligne = .Rows.Count
.Cell(ligne, 1).Range.InsertAfter Texte_à_transcrire
next i
end with
Pour mettre en évidence l'intitulé "Article" contenu dans le texte, on va demander gentillement à "l'application Word" (Dim WordApp As Word.Application) de repérer le mot, de le mettre en gras et de le souligner (par exemple) :
With WordApp.ActiveDocument.Content.Find
.Text = "Article : "
.Forward = False
.Execute
If .Found = True Then
.Parent.Underline = wdUnderlineSingle
.Parent.Bold = True
End If
End With
Pour placer ces lignes dans le code :
With WordDoc.Tables(1)
For i = 1 To Nbdonnées
Texte_à_transcrire= "Article : " & Transit(1, i) & vbcr & Transit(2, i) & vbtab & Transit(3,i)
ligne = .Rows.Count
.Cell(ligne, 1).Range.InsertAfter Texte_à_transcrire
With WordApp.ActiveDocument.Content.Find
.Text = "Article : "
.Forward = False
.Execute
If .Found = True Then
.Parent.Underline = wdUnderlineSingle
.Parent.Bold = True
End If
End With
next i
end with
Voilà, tout, il est possible, et même certain, que ces lignes peuvent être améliorées, je suis preneur de toutes suggestions. Ce que je peux vous dire, c'est que ça "fait le job" dans une applic utilisée quotidiennement dans mon boulot.
Merci par avance des commentaires que vous me laisserez,
tatiak