VB6 - champ d'une table en variabledoc suos word [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008
-
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008
-
Bonjour, j'ai un peut cherché dans les différentes rubrique mais je n'ai rien vu pour cette question :

Pour imprimer un document j'utilise word je charge tout les champs d'une de mes tables par vb6 dans des variables et puis je transmet les variables sous word tout fonctionne, tout est reopsitionné, exepté que certain champs de ma table sont en fet le résulta de textbox multiligne et donc enregistré en champ mémo et quand je replace la valeur en variables doc dans word comme c'est du multiligne, il me met un carré (quand je suis en times new roman, et un espèce d'arrobase inversé quand je suis en paladino ) à chaque ligne de me textbox multiligne

Comment puis-je supprimer ces carrés. dois-je utiliser d'autre type de champ ou c'est juste une option à changer sous word..

ou vb à t-il quelque chose à voir

merci de m'aider...

et une bonne journée à tous

8 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
salut,
sur chacun de tes champs multilignes, essaye en remplaçant le vbcrlf par vblf

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
umm...

essaye comme çà 

Private Sub Cmd_Exporter_Click()
    Dim wdApp As New Word.Application
    Set wdApp = CreateObject("Word.Application")
    With wdApp
        .Visible = False
        .Documents.Open App.Path & "\fileword\anamnese" & "anamnese.doc"
        .Selection.WholeStory
        .Selection.Copy
        .Documents(1).Close
   
        .Documents.Add DocumentType:=wdNewBlankDocument
        .Selection.Paste
        For X = 0 To anamnese.Fields.Count - 1
            If LenB(anamnese.Fields(X).Value)
Then _
                .Documents(1).Variables.Add anamnese.Fields(X).Name, Replace(CStr(anamnese.Fields(X).Value), vbCrLf,
vbLf)
        Next X
        .Documents(1).Fields.Update
        .Visible = True
    End With
    Set wdApp = Nothing
End Sub

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
aucune idée avec des signets

quand tu copies, si tu colles dans l'IDE VBA tu as aussi un retour à la ligne?
si non, teste avec msgbox asc("TON_COPIER_COLLER")
tu devras avoir 10 ou 13 normalement
10, c'est vblf
13 c'est vbcr

si tu as 13 tu sais quoi faire ;)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008

Ou et comment dois-je faire cela ??


 
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
Ou et comment récupères-tu tes valeurs?
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008

Certaines de mes textbox sont en multilignes et enregistrée en champ mémo dans ma base dans la table anamnèse (j'ai un fichier pré-établi que je dois remplire anamnèse.doc) quand je rempli mes textbox "normales" enregistrées en champ texte pas de problème mais les texbox multilignes à chaque ligne "retour chariot" que je passe, il rajoute le retour chariot dans word mais par un carré ( en times new roman) et une espèce de arobase inversée en paladino. c pas très estétique

Sur mon bouton exporter j'ai le code suivant


nomfichier = App.Path & "\fileword\anamnese" & "anamnese.doc"
      ' Démarrer Word
    Dim wdApp As New Word.Application
    Set wdApp = CreateObject("Word.Application")
    wdApp.Visible = False
    wdApp.Documents.Open nomfichier
    wdApp.Selection.WholeStory
    wdApp.Selection.Copy
    wdApp.Documents(1).Close
   
    wdApp.Documents.Add DocumentType:=wdNewBlankDocument
    wdApp.Selection.Paste
    For X = 0 To anamnese.Fields.Count - 1
    If Not anamnese.Fields(X).Value = "" Then
    wdApp.Documents(1).Variables.Add anamnese.Fields(X).Name, CStr(anamnese.Fields(X).Value)
   End If


    Next X
         wdApp.Documents(1).Fields.Update
      wdApp.Visible = True

Sinon j'ai aussi pensé à créer une macro qui lit chaque ligne et supprime ce caractère si il est présent en début de ligne mais je ne sais pas c'est quel caractère exactement dans word ce carré ou cet arobase inversé

si pas je vais devoir laisser comme ca mais question estétique 0 

merci
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008

Dans word on voit encore les retours chariot sous forme de carré mais cette fois au lieu d'ètre à la ligne ils sont sur la même ligne 

Je pense que le problème est que Word n'accèpte pas les retour chariot de VB si je copie ce fameux retour chariot et que je le colle dans la fenetre ou j'écris ce message j'ai un retour chariot qui se fait, sans problème

je pense que dans les variablesdoc  on ne peut utiliser de ENTER

c bizard,

que pourrais-je faire

en utilisant des signet, je suis sur que l'on a pas ce genre de problème ???
Messages postés
8
Date d'inscription
lundi 11 février 2008
Statut
Membre
Dernière intervention
17 février 2008

Oui ca fonctionne c'est génial, fallait mettre

Replace(CStr(planalim.Fields(X).Value), vbCrLf, vbCr)

Excellent, Un IMENSE merci à toi pour le temps que tu m'as consacré.

depuis le temps que je m'énerve avec ca

grand merci et bon fin de week end a toi