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 :

Pilotage Word depuis Access, remplacer dans zone de texte


Sujet :

VBA Word

  1. #1
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut Pilotage Word depuis Access, remplacer dans zone de texte
    Bonjour,

    je m'agace à tourner autour du pot avec un bout de code sensé remplacer toute une série de valeurs.

    Le document template existe déjà, avec des zones de texte sur une seule feuille. Mon objectif est de boucler sur des valeurs et d'automatiser le remplacement des dites valeurs dans le doc.

    Mon code actuel est le suivant

    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
    Dim wdapp As New Word.Application
        Dim wddoc As Word.Document
        Set wddoc = wdapp.Documents.Open("C:\template\Traite.doc")
        tmppathdoc = "'C:\temp\resultat.docx"
        wddoc.SaveAs2 tmppathdoc
        Dim ColLst As New Collection
        ColLst.Add "[RAISON_SOCIALE_VENDEUR]|" & tmpvendeur.RaisonSociale
        ColLst.Add "[Nom_Contact_VENDEUR]|" & tmpcontactvendeur.Nom
        ColLst.Add "[RUE_VENDEUR]|" & tmpvendeur.AdresseFacturation.Rue
        ColLst.Add "[CP_VENDEUR]|" & tmpvendeur.AdresseFacturation.CP
        ColLst.Add "[VILLE_VENDEUR]|" & tmpvendeur.AdresseFacturation.Ville
        ColLst.Add "[PAYS_VENDEUR]|" & tmpvendeur.AdresseFacturation.Pays
        For i = 1 To ColLst.Count
            wddoc.Activate
     
            With wdapp.Selection
                .WholeStory
            'A ADAPTER
                .Find.ClearFormatting
                .Find.Replacement.ClearFormatting
                With .Find
                    .Text = Split(ColLst.Item(i), "|")(0)
                    .Replacement.Text = Split(ColLst.Item(i), "|")(1)
                    .Forward = True
                    .Wrap = wdFindContinue
                    .Format = False
                    .MatchCase = False
                    .MatchWholeWord = False
                    .MatchWildcards = False
                    .MatchSoundsLike = False
                    .MatchAllWordForms = False
                End With
                .Find.Execute Replace:=wdReplaceAll
            End With
        Next i
        wddoc.Save
    Il boucle bien, mais aucune modification n'a lieu.

    Je cherche donc à savoir comment avoir la bonne wdapp.selection au moment de la recherche.

    Auriez-vous une solution pour m'aider svp ?

    Merci d'avance !
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    bon, j'ai trouvé mon bonheur dans la discussion de 2007
    http://www.developpez.net/forums/d28...te-zone-texte/

    j'arrive donc à ce simplissime code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For i = 1 To ColLst.Count
            For j = 1 To wddoc.Shapes.Count
                wddoc.Activate
                wddoc.Shapes(j).TextFrame.TextRange.Text = Replace(wddoc.Shapes(j).TextFrame.TextRange.Text, Split(ColLst.Item(i), "|")(0), Split(ColLst.Item(i), "|")(1))
            Next j
    Next i
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pilotage word depuis access
    Par devdev dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/04/2010, 09h54
  2. insérer une liste numérotée dans word depuis access
    Par Syrrus dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/11/2007, 09h45
  3. fusion dans word depuis access
    Par imeys dans le forum Word
    Réponses: 4
    Dernier message: 13/04/2007, 16h53
  4. signet dans word depuis access
    Par imeys dans le forum Access
    Réponses: 7
    Dernier message: 17/02/2007, 13h57
  5. Réponses: 4
    Dernier message: 12/10/2006, 17h03

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