IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

XML vers Word


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut XML vers Word
    Bonjour à toutes et à tous,
    à partir d'Excel je pilote word, jusque là tout baigne...
    Maintenant je vais avoir des cellules ou zones de textes sur Excel avec des caractères formatés (Gras, Italique, Couleur, taille, Différentes...).
    Comment importer ces textes formatés ?
    En farfouillant et en faisant appel à la communauté "Excel", j'ai réussi à sortir du Code XML, comment l'intégrer dans word ?
    Par exemple :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <FONT color=#000000>Tata m</FONT><FONT color=#00b050>an</FONT><FONT color=#000000>ge des </FONT><FONT color=#ff0000>Carottes</FONT><FONT color=#000000> </FONT><B><FONT color=#00b050 size=16>Vertes</FONT></B>
    Devient : Tata mange des Carottes Vertes
    Merci de votre aide,
    SB

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SBranchu Voir le message
    Bonjour,

    Comment générez-vous cette ligne ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut Sur Excel
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Comment générez-vous cette ligne ?
    Sur excel : https://www.developpez.net/forums/d2...t-texte-excel/


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function test(c As Range)
        codexml = Replace(Replace(c.Value(xlRangeValueXMLSpreadsheet), "html:", ""), "ss:", "")
        With CreateObject("htmlfile")
            .body.innerhtml = Replace(Replace(codexml, "<Data", "<pre  id =xx"), "Data>", "pre>")
            'MsgBox .getelementbyid("xx").innerhtml
            test = .getelementbyid("xx").innerhtml
        End With
    End Function
    Fichiers attachés Fichiers attachés

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Comment générez-vous cette ligne ?
    Mais moi c'est justement l'inverse sur word que je veux faire...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SBranchu Voir le message
    Merci pour votre retour.

    Si je copie la cellule B2 et que je la colle dans Word, je restitue correctement la mise en forme.

    Quel code utilisez-vous pour piloter Word et déverser vos données ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Merci pour votre retour.

    Si je copie la cellule B2 et que je la colle dans Word, je restitue correctement la mise en forme.

    Quel code utilisez-vous pour piloter Word et déverser vos données ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordApp.ActiveDocument.SelectContentControlsByTitle("Ctrl")(1).Range.Text = Zaza2
    Suis pas fan du copier/coller mais si il n'y a que cette possibilité...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SBranchu Voir le message
    Une solution pas forcément satisfaisante mais qui marche : Vous récupérez dans vos contentcontrols un tableau d'une cellule.
    En l'état actuel, cela marchera si votre document est issu d'un modèle. En revanche, si vous souhaitez le modifier, il faudra creuser le cas où le contenu des contentcontrols est un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Sub CopierCollerDansWord()
     
    Dim AireSource As Range
    Dim I As Long, J As Long, DerniereLigne As Long
    Dim WordApp As Object, WordDoc As Object
    Dim CheminWord As String, NomDoc As String
    Dim HeureDebut, HeureFin, TempsTotal
     
        On Error GoTo Fin
     
        Application.ScreenUpdating = False
        HeureDebut = Timer
        CheminWord = ActiveWorkbook.Path & "\Cellule en Html.docm"    ' A adapter
     
        With Sheets("Feuil1")
             DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
             Set AireSource = .Range(.Cells(2, 1), .Cells(DerniereLigne, 1))
        End With
     
        Set WordApp = CreateObject("word.Application")
     
        With WordApp
             .Visible = True
             Set WordDoc = .Documents.Open(CheminWord)
     
             For J = 1 To AireSource.Count
                 AireSource(J).Offset(0, 1).Copy
                 For I = 1 To WordDoc.contentcontrols.Count
                     If AireSource(J) = WordDoc.contentcontrols(I).Title Then
                        WordDoc.contentcontrols(I).Range.Paste
                        Exit For
                     End If
                 Next I
              Next J
             ' WordDoc.Close savechanges:=True
     
        End With
     
        Application.ScreenUpdating = True
     
        HeureFin = Timer
        TempsTotal = HeureFin - HeureDebut
     
        Debug.Print "Temps total du traitement : " & Round(TempsTotal, 0) & " seconde(s)"
     
       GoTo Fin
     
    Fin:
     
       Application.ScreenUpdating = True
     
      ' WordApp.Quit
       Set WordApp = Nothing: Set WordDoc = Nothing
       Set AireSource = Nothing
     
    End Sub
    Les données sont organisées de cette manière dans l'onglet Feuil1

    Pièce jointe 595320

Discussions similaires

  1. [Mysql] Donnée XML >vers> BDD
    Par largiss dans le forum XQUERY/SGBD
    Réponses: 14
    Dernier message: 28/02/2017, 17h51
  2. XML vers XML avec XSL
    Par guizz79 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 09h43
  3. [XSLT] XML vers XML
    Par ren0 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/10/2004, 12h54
  4. [VB6] exporter des données de Vb vers word
    Par ptitjean80 dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 29/05/2004, 02h50
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo