Publicité
Tatiak
28 juin 2009

"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

Publicité
Commentaires
T
Bonjour,<br /> Plusieurs méthodes sont possibles :<br /> voir ici : http://tatiak.canalblog.com/archives/2009/06/14/14074267.html<br /> et ici : http://tatiak.canalblog.com/archives/2009/06/28/14228797.html<br /> et merci de ton commentaire<br /> :) tatiak
Répondre
C
Merci Tatiak pour ces aides.<br /> <br /> En me basant sur ton blog, j'ai crée un fichier excel à partir de la en poussant sur un bouton, il me crée un nouveau fichier basé sur un modèle.<br /> <br /> Le problème que j'ai maintenant, c'est que je n'arrive pas à écrire du texte (qui se trouve dans excel) dans le nouveau fichier word créé.<br /> <br /> As-tu une solution?<br /> <br /> D'avance merci<br /> <br /> Cedex
Répondre
Publicité