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 Access Discussion :

Automation champs word


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    consultant environnement et développement d'applications de base de données
    Inscrit en
    Janvier 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : consultant environnement et développement d'applications de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2006
    Messages : 335
    Points : 166
    Points
    166
    Par défaut Automation champs word
    Bonjour,

    Je souhaite remplir un document word à partir d'access à l'aide d'une méthode différente du publipostage.
    je souhaite que les utilisateurs puisse créer leur document facilement en y intégrant des champs (de fusion...) avec CTRL+F9 en utilisant des codes que je leur indique dans un glossaire.
    j'arrive à énumérer tous les champs de ce doc sous access mais je cherche ensuite à les peupler avec la valeur et c'est là que ça coince !
    je fais un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for x=1 to docWord.Fields.Count
    nom_champ = RTrim(LTrim(docWord.Fields(x).code))
    Select Case nom_champ
        Case "GINKO_nom_exploitation": docWord.Fields(nom_champ).result = rst("nom_exploitation_complet")
    ...
    et c'est cette dernière ligne qui pose problème, je ne peux pas remplacer mon champs word par sa valeur d'ACCESS ? j'ai essayé avec range.text mais pas mieux...
    j'ai vu que je pouvais utiliser plus facilement les signets pour cette tâche mais je trouve que c'est moins facile à utiliser sous word car on ne les visualise pas et on a plus de mal à leur donner une mise en forme.
    après il y a la solution du "bête" rechercher-remplacer...
    avez-vous un avis ? est-ce que je peux utiliser les fields et si oui, comment ?
    merci par avance
    guen

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docWord.Fields(nom_champ).result.text
    si je ne m'abuse. (Mieux vaut tard que jamais, je suis tombé sur ce post orphelin en faisant une recherche sur les champs Word pour un autre problème)
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  3. #3
    Membre habitué
    Homme Profil pro
    consultant environnement et développement d'applications de base de données
    Inscrit en
    Janvier 2006
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : consultant environnement et développement d'applications de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2006
    Messages : 335
    Points : 166
    Points
    166
    Par défaut
    Bonjour et merci de vous "occuper de mon cas"..j'avais renoncé sur cette méthode car je n'ai jamais trouvé la solution et il me semble bien avoir essayé ce que vous proposez sans succès... pour finir, ci cela peut aider qq un ensuite, je passe tout simplement par un rechercher/remplacer dans le texte... j'ai crée une liste de mots clefs que les utilisateurs ont et qui sont tous de la forme {GINKO_mot-clef}, je la mets dans une table tabFusionOffice pour mieux gérer sa mise à jour.. ensuite, je fais un rechercher/remplacer sur ces mots clefs... le code est du style :

    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
        'J'initialise mes variables
        Set rst = CurrentDb.OpenRecordset("SELECT * FROM rqtSessions WHERE id_session=" & id_session)
        Set docApp = CreateObject("word.Application")
        Set docWord = docApp.Documents.Add(CurrentProject.Path & "\Calculateurs\" & source)
     
        docApp.visible = False
     
        'remplace les codes réservés
        Dim rst_codes As DAO.Recordset
        Dim Texte As String
        Set rst_codes = CurrentDb.OpenRecordset("SELECT * FROM tabFusionOffice WHERE sommeil<>-1")
     
        While Not rst_codes.EOF
            If Not IsNull(rst_codes("source")) Then
                Texte = Nz(Eval(rst_codes("source")), "")
                RemplacerWord docWord, rst_codes("code_fusion"), Texte
            End If
            rst_codes.MoveNext
        Wend
    avec la fonction remplacer ainsi :

    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 Sub RemplacerWord(docWord As Word.DOCUMENT, texte_cherche As String, texte_remplace As Variant)
    On Error GoTo Err_RemplacerWord
     
        Dim MyRange As Word.Range
        Set MyRange = docWord.Content
        MyRange.Find.Execute FindText:=texte_cherche, _
        ReplaceWith:=Nz(texte_remplace, ""), Replace:=wdReplaceAll
     
    Exit_RemplacerWord:
        Exit Sub
     
    Err_RemplacerWord:
        MsgBox "Erreur " & err.Number & " (" & err.description & ") dans la procédure RemplacerWord de Module Exports"
        Resume Exit_RemplacerWord
     
    End Sub
    ça marche bien et ce n'est pas trop lourd pour les utilisateurs !
    Voilà si ça peut servir à quelqu'un..

    Guen

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2007
    Messages : 184
    Points : 188
    Points
    188
    Par défaut
    bonjour,
    Excellente proposition.
    Dans une application, j'ai atteint la limite de nombre de champs (255) pour faire une fusion classique.
    Ta proposition va me permettre de "fusionner" mon document Word avec plusieurs RecordSet.
    Merci pour cette contribution
    Bonne journée
    Fevec

Discussions similaires

  1. Réponses: 10
    Dernier message: 14/01/2015, 00h41
  2. Réponses: 3
    Dernier message: 07/04/2006, 16h22
  3. [MFC] Automation MS Word / Correction orthographique
    Par bigboomshakala dans le forum MFC
    Réponses: 8
    Dernier message: 07/04/2006, 14h48
  4. [automation] macro word vers access
    Par gukki dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 16h56
  5. Réponses: 3
    Dernier message: 17/02/2005, 08h37

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