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

VB 6 et antérieur Discussion :

[VB6] exporter des données de Vb vers word [FAQ]


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2004
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [VB6] exporter des données de Vb vers word
    Bonjour
    Je souhaiterais exporter des données enregistrées dans des textbox lors du fonctionnement d'un programme vb vers une page word préétablie ou des espaces seraient complétés par les données des textbox

  2. #2
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    salut !

    Tu insères des signets dans ton document word et tu les remplis via VB avec la valeur de tes textbox

    Si tu veux un peit exemple dis-le moi

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Kikoo Khany
    Je suis partant pour un petit exemple, j'ai pas encore testé l'interaction VB/WORD et ça peu toujours servir.

    Enfin si t'as un petit moment à consacrer, à un petit newbee des outils microsoft^^

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Février 2003
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Etats-Unis

    Informations forums :
    Inscription : Février 2003
    Messages : 95
    Points : 85
    Points
    85
    Par défaut
    Salut !

    Moi aussi je suis intéressé par un exemple ...

  5. #5
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    salut !

    Voilà la partie VB qui remplit des signets dans un doc Word. N'oubliez pas de mettre les signets avant de faire un test

    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
     
        Dim MyWord      As Word.Application
        Dim MonControle As String
     
        Set MyWord = New Word.Application
     
                With MyWord
                    .Documents.Open (PathDocu & ChoixDocu)
                    .Visible = True    'dans  ce cas, word s'ouvre et le document est affiché pour d'autres modif éventuelles
     
                    .ActiveDocument.Bookmarks("NomPers1").Range.Text = Rs!nom
                    .ActiveDocument.Bookmarks("PrenomPers1").Range.Text = Rs!prenom
                    .ActiveDocument.Bookmarks("NomPers2").Range.Text = Rs!nom
                    .ActiveDocument.Bookmarks("PrenomPers2").Range.Text = Rs!prenom
                    For k = 1 To 11
                        MonControle = "Mat" & Trim(Str(k))
                        .ActiveDocument.Bookmarks(MonControle).Range.Text = TbMat(k - 1)
                        MonControle = "Matt" & Trim(Str(k))
                        .ActiveDocument.Bookmarks(MonControle).Range.Text = TbMat(k - 1)
                    Next k
                   ' .ActiveDocument.Bookmarks("Statut").Range.Text = RsDonneeProf!TypeFct
                    .ActiveDocument.Bookmarks("DateSignature").Range.Text = DateJour
                End With
     
                DoEvents
                Set MyWord = Nothing
     
    ---> dans ce cas, le document est piloté dans le word pour imprimer, modifier des infos, sauver si on veut, .......
     
     
            .ActiveDocument.PrintOut
            .ActiveDocument.Close wdDoNotSaveChanges
     
    -----> dans ce cas (pas mettre document.visible = True), le document est rempli, imprimé et fermé sans sauvegarde des modif et sans qu'il soit visible à l'utilisateur
    Voilà, j'espère que cela vous a aidé

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Mici^^
    Merci pour ton exemple, dès que j'ai fini ce maudit programme de teste de saisie je vais me tester ça tout de sutie^^

    encore merci^^

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut Khany,

    Premièrement, Merci beaucoup pour cette partie du code pour l'impression sous Word...


    Mais j'aurais une question concernant le code que tu donnes :

    MonControle = "Mat" & Trim(Str(k))

    MonControle = "Matt" & Trim(Str(k))


    Veux-tu me dire qu'est-ce que "Mat" et "Matt" représentent ??

    Est-ce des valeurs fixées d'avance, ou quoi ?

    Merci de l'éclaircissement !!

  8. #8
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Salut !


    Non, ce sont des signets dans mon doc Word

    si tu préfères j'ai nommé mes signets "Mat1" jusqu'à "Mat11" (idem avec Matt) pour faire une boucle dans mon prog vb simplement

    donc quand je suis à l'élément 5 de ma boucle, je remplis "Mat5" dans Word

    Juste pour simplifier le code dans vb sinon, j'aurais 11 fois la même instruction avec un nom de signet différent, comme ca, j'ai une boucle, c tout

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Fantastico !! 8) 8)


    Merci Khany !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    bonjour,
    je voudrais avoir quelques complements d'informations sur le code de Khany car je cherche à faire éxactement la même chose mais ya des petits trucs que je comprend pas..
    Je voudrais savoir a quoi correspond "NomPers1" et "Rs!nom" dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .ActiveDocument.Bookmarks("NomPers1").Range.Text = Rs!nom
    Merci..

  11. #11
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut


    NomPers1 = le signet qui se trouve dans mon doc word

    Rs!Nom = le champ "Nom" du recordset "Rs" dont je désires mettre la valeur dans le signet


  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Comment faire si on ne sait pas à l'avance combien de ligne va être affiché sur le doc word, je m'explique, par exemple dans mon app, l'utilisateur choisit des articles selon les besoins du client mais évidemment chaque en fonction des ses besoins, alors voilà comme on ne sait pas combien d'articles va prendre tel client ou tel client je ne peux mettre des signets "fixes" sur mon doc word, comment faire alors ?

    merci

  13. #13
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Dans ce cas, tu dois utiliser une autre méthode.

    Tu sauves tes données dans une BD et tu fais un document de Fusion/publipostage dans Word.

    Tu enregistres les instructions de fusion/publipostage dans une macro que tu lances via VB avec un DoCmd.

    Dans ce cas, tu peux avoir un nombre de données aléatoire et elles seront placées où tu as inséré tes champs de fusion

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    je viens à l'instant d'apprendre à utiliser le concept fusion/publipostage, ça fonctionne avec un enregistrement (une ligne) mais je vois toujours pas comment je puisse faire pour insérer plusieurs "ligne" qui ont les même nom des champs de fusion

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 6
    Points : 10
    Points
    10
    Par défaut
    Je crois qu'il y a une solution simple à ton problème d'articles multiples.
    J'imagine que c'est une espece de bon de commande que tu génères ?

    Tu mets un tableau dans le document (style: Qté, Réf, Designation, PU, Prix Total) avec seulement une ligne pour les articles.
    Tu poses un signet dans la première celllule (ex. quantité du 1er article).
    Par code tu vas sur ce signet et tu mets le texte avec Selection.TypeText Text:="mon texte", ensuite tu passes à la cellule suivante avec Selection.MoveRight Unit:=wdCell.
    Tu continues comme ça avec les détails de ton article dans chaque cellule.
    Arrivé à la fin de la ligne, au prochain MoveRight Word va automatiquement ajouter une ligne au tableau.
    Si tu declares la ligne d'en-tête du tableau "Repeter en haut de chaque page en tant qu'en-tête" il va même te remettre tes libellées de colonne sur la page suivante s'il y a beaucoup d'articles.

    Bon courage
    Clive

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 6
    Points : 10
    Points
    10
    Par défaut
    Voici quelques fonctions utiles pour gérer les signets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub EnumSignets()
    ' Fonction pour générer la cartographique des signets
    ' Met le nom du signet dans chaque signet
    Dim I As Integer
    Dim RetVal As Boolean
    With ActiveDocument.Bookmarks
        For I = 1 To .Count
              RetVal = Fill_Bookmark(.Item(I).Name, "[" & .Item(I).Name & "]")
        Next I
    End With
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub ViderSignets()
    ' Vide tous les signets
    Dim I As Integer
    Dim RetVal As Boolean
    With ActiveDocument.Bookmarks
        For I = 1 To .Count
              RetVal = Fill_Bookmark(.Item(I).Name, " ")
         Next I
    End With
    End Sub
    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
    Public Function Read_Bookmark(BM_Name As String) As String
    ' Va chercher le texte dans le signet BM_Name
    Dim msg As String
        If ActiveDocument.Bookmarks.Exists(BM_Name) Then 'Le signet existe
            With ActiveDocument.Bookmarks(BM_Name)
                .Select
                Read_Bookmark = .Range.Text
     
            End With
            Exit Function
        Else 'Le signet n'existe pas
            msg = "Erreur sur la feuille." & vbCr & "Le signet " & BM_Name & " n'est plus défini." 
            MsgBox (msg)
            Read_Bookmark = "Not Found"
        End If
    End Function
    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
    Public Function Fill_Bookmark(BM_Name As String, BM_Value As String) As Boolean
    ' Va mettre BM_Value dans le bookmark BM_Name. Retourne Vrai si succès
    Dim msg As String
        If ActiveDocument.Bookmarks.Exists(BM_Name) Then 'Le signet existe
            With ActiveDocument.Bookmarks(BM_Name)
                .Select
                Selection.Text = BM_Value
                ' On recrée le signet car on l'a detruit en mettant le texte
                ActiveDocument.Bookmarks.Add Name:=BM_Name, Range:=Selection.Range
            End With
            Fill_Bookmark = True
            Exit Function
        Else 'Le signet n'existe pas
            msg = "Erreur sur la feuille." & vbCr & "Le signet " & BM_Name & " n'est plus défini." & vbCr & "Merci de contacter le responsable."
            MsgBox (msg)
            Fill_Bookmark = False
        End If
    End Function
    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
    Public Sub CopyInWmf(WmfFile As String, WMFPath as String)
    'Pour mettre un logo ou image sur la page
    'Cherche le fichier WmfFile dans WMFPath et l'insère dans le document au signet [Croquis]
    Dim TmpCroquis As InlineShape
    Dim FS
    Dim RetVal As Boolean
        'Ajouter le chemin au nom de fichier wmf
        If Right$(WMFPath, 1) = "\" Then
            WmfFile = WMFPath & WmfFile
        Else
            WmfFile = WMFPath & "\" & WmfFile
        End If
       ' Va mettre fichier wmf dans le bookmark Croquis
       'Créer un objet pour puvoir ensuite le bookmarker car l'insertion
       'de l'image detruit le signet d'origine - ne me demandez pas pourquoi,
       'les voies de Billou sont impénétrables.
        Set FS = CreateObject("Scripting.FileSystemObject")
        If FS.fileexists(WmfFile) Then 'On a trouvé le fichier
            If ActiveDocument.Bookmarks.Exists("Croquis") Then 'On a trouvé le signet
                With ActiveDocument.Bookmarks("Croquis")
                    .Select
                    'Inserer l'image
                    Set TmpCroquis = Selection.InlineShapes.AddPicture(WmfFile, False, True)
                    TmpCroquis.Select
                    ' On recrée le signet car on l'a detruit en mettant le texte
                    ActiveDocument.Bookmarks.Add Name:="Croquis", Range:=Selection.Range
                End With
                Set FS = Nothing 'Important - détruire les objets crées sinon refus de fermeture de Word
                Exit Sub
            Else 'pas de signet
                MsgBox "Le Signet 'Croquis' n'existe pas! Arrêt."
     
            End If
        Else 'Fichier croquis pas trouvé
            'Affiche le plan quand même
            MsgBox ("Le croquis n'a pas été trouvé. Merci d'imprimer la feuille et de la transmettre au responsable")
            RetVal = Fill_Bookmark("Croquis", "Croquis " & WmfFile & " pas trouvé")
            Set FS = Nothing
        End If
     
    End Sub
    En esperant que cela soit utile

    Clive

  17. #17
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Citation Envoyé par Clive
    En esperant que cela soit utile
    Clive
    Oui cela va aller rejoindre la FAQ VBA

    Merci

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup

  19. #19
    Futur Membre du Club
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Salut !

    merci pour les infos ! ça m'aide beaucoup mais j'ai un petit problème !

    Voilà !

    Je souhaite faire une fusion/publipostage, à partir d'un form, je souhaite mettre les dans ma lettre uniquement les données d'une personne (cad une seule ligne d'enregistrement).

    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
    Private Sub btinscrit_Click()
    'On Error GoTo testerreur
    'je définis une nouvelle instance de word
    Dim MyWord As Word.Application
    Set MyWord = New Word.Application
    'je rends l'application visible
    MyWord.Visible = True
    'j'ouvre la lettre type
    Documents.Open ("C:\Gestion_des_Adhérents\vb\fiche_adhesion.doc")
    'je définis le fichier de données
    Documents(App.Path & "\fiche_adhesion.doc").MailMerge.OpenDataSource (App.Path & "\tahitiens.mdb")
    'je lance la fusion
    Documents(App.Path & "\fiche_adhesion.doc").MailMerge.Execute
    Exit Sub
    'le gestionnaire d'erreur
    'testerreur:
    'MsgBox "Erreur lors de l'execution...Recommencez", vbCritical, ""
    End Sub
    lorsque je test mon bouton, il m'ouvre bien le document word que je lui ais demandé.
    premier pb, il m'ouvre deux fois le document word avec les info de ma 1ère ligne de ma table (alors que j'ai demandé la 5ème ligne)

    deuxième problème, lorsque je ferme les documents word et que je rappuie sur le bouton, il me met un message d'erreur :
    Erreur d'execution 462
    le serveur distant n'existe pas ou n'est pas disponible

    voilà !

    merci de votre aide !

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/01/2008, 14h20
  2. Réponses: 0
    Dernier message: 24/07/2007, 13h22
  3. Réponses: 1
    Dernier message: 14/05/2007, 14h52
  4. [CSV] exporter des données d'un fichier CSV vers BD Mysql
    Par samsso2006 dans le forum Langage
    Réponses: 2
    Dernier message: 04/05/2007, 22h25
  5. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28

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