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

Word Discussion :

Publipostage : Stocker l'adresse d'un document dans un string


Sujet :

Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut Publipostage : Stocker l'adresse d'un document dans un string
    Bonjour à tous,
    Je suis en train de réaliser une macro d'automatisation de publipostage, et je souhaite pouvoir réaliser cette opération sur word, à partir de n'importe quel document excel. Pour cela j'ai créé une portion de code qui me permet d'ouvrir une boite de dialogue afin de sélectionner mon fichier source, et de stocker l'adresse de ce fichier dans un string.

    Mon problème est donc d'utiliser cette variable dans la suite du code afin que mon ordinateur effectue l'opération de publipostage sur le bon fichier source. Autrement dit, transformer le code 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
    Sub DocSource(Adresse)
     
        'activation du document, puis du format d'étiquette
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls" _
            , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
            , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
            wdMergeSubTypeAccess
    End Sub
    en remplacant "F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls" par ma variable Adresse qui contient l'adresse du document source que je souhaite.

    Vous me seriez d'une grande grande aide !

    merci

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

    Une piste peut-être ici : Sauvegarder-lire-macro-infos-collection-variables-document-word

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup de ta réponse Eric,

    Mon problème réside surtout dans la lisibilité de ma variable string par l'ordinateur, plus que par une message box... en fait je voudrais que la macro qui permet de fixer le format de l'étiquette (le code que j'ai mis au dessus en somme ...) puisse activer mon document dont l'adresse est contenue dans ma variable Adresse, plutôt que d'avoir à réécrire une macro spécifique pour chaque document (en changeant manuellement le nom de l'adresse).

    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Si ton document source fait référence toujours au même fichier Excel pour alimenter ton publipostage, créer une variable dans la collection Variables de ton doc est un moyen de mémoriser l'info.
    Je n'ai sans doute pas compris ce que tu voulais faire.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Ce que je veux faire, c'est pouvoir réaliser mon publipostage quel que soit le document excel source. Par exemple, si on le déplace (et que donc on change son adresse), je veux que la macro continue de marcher sans qu'on ait besoin d'y toucher (je suis stagiaire actuellement, et donc je ne serai plus dans mon entreprise dans quelques semaines : les gens avec qui je travaille demandent que je réalise une macro qu'ils n'auront plus besoin de toucher)

    Pour arriver à ça, j'ai écrit un code permettant de sélectionner le document source (via une page "ouvrir") et j'ai stocké l'adresse du document sélectionné dans ma variable "Adresse". Maintenant il faut que je change le code que j'ai copié 3 messages au dessus, pour qu'il prenne en entrée l'adresse que l'utilisateur aura sélectionné.

    Dis moi si c'est plus clair

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Si les utilisateurs doivent aller chercher manuellement le fichier excel (emplacement et nom variables), une solution consisterait à passer par un userform pour alimenter ta variable.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    moi je suis passé par une FileDialog : j'ai fait comme ça


    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
    Function ShowFileDialog() As String
        Dim Adresse As String
        Dim dlgOpen As FileDialog
        Set dlgOpen = Application.FileDialog( _
            FileDialogType:=msoFileDialogOpen)
        With dlgOpen
            .AllowMultiSelect = False
            .Show
     
        End With
        Adresse = ActiveDocument.Path & Application.PathSeparator & _
        ActiveDocument.Name
        ShowFileDialog = Adresse
     
    End Function

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    ce code permet d'ouvri une page FileDialog, de sélectionner un seul document (AllowMultiSelect = False) et de stocker l'adresse de ce document dans la variable "Adresse"

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Ton code pointe sur le document Word en cours. J'imagine que ce n'est pas cela que tu souhaitais.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Il faut modifier ton code pour récupérer le nom du fichier et la variable Adresse doit être Public si cette variable doit être utilisée dans d'autres modules.

    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
     
    Option Explicit
     
    Public Adresse
     
    Sub Test()
     
        Adresse = ShowFileDialog
        MsgBox Adresse
     
    End Sub
     
    Function ShowFileDialog() As String
     
    Dim dlgOpen As FileDialog
     
        Set dlgOpen = Application.FileDialog(fileDialogType:=msoFileDialogOpen)
        With dlgOpen
             .AllowMultiSelect = False
             .Show
        End With
     
        ShowFileDialog = dlgOpen.SelectedItems(1)
     
    End Function

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    C'est exactement ça, mais mon probleme à moi maintenant c'est de réutiliser l'adresse stockée dans ce code ci :

    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
    Sub DocSource(Adresse)
     
        'activation du document, puis du format d'étiquette
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls" _
            , ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
            AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
            WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
            Format:=wdOpenFormatAuto, Connection:= _
            "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
            , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
            wdMergeSubTypeAccess
    End Sub
    dans l'optique que mon programme n'aille plus chercher à l'adresse "F:\# 3 Courrier interne et Imprimés\Z (stage)\Gaspard BARRIER\publipostage\listing pour calendriers 2018 -revue du 011217.xls" (qui est susceptible de disparaitre) mais à l'adresse' stockée dans la variable Adresse

    merci beaucoup pour tes réponses

    PS : est ce que tu peux me dire comme tu fais pour inserer des lignes de code proprement (pas comme ce que je fais dans ce message en somme)

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Tu peux t'affranchir de la variable Adresse en utilisant directement ta fonction comme paramètre de DocSouce, comme ci-dessous.

    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
     
    Option Explicit
     
    Sub Test()
     
        DocSource AdresseFichierExcel
     
    End Sub
     
    Function AdresseFichierExcel() As String
     
    Dim dlgOpen As FileDialog
     
        Set dlgOpen = Application.FileDialog(fileDialogType:=msoFileDialogOpen)
        With dlgOpen
             .AllowMultiSelect = False
             .Show
        End With
        AdresseFichierExcel = dlgOpen.SelectedItems(1)
        Set dlgOpen = Nothing
     
    End Function
     
    Sub DocSource(ByVal Adresse2 As String)
     
        'activation du document, puis du format d'étiquette
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:=Adresse2, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
           WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
           "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & Adresse2 & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
           , SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
     
    End Sub
    Pour mettre ton code entre balises, il te faut sélectionner ton code et cliquer sur #.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    YESSS ça marche ! Merci beaucoup, tu gères de ouf !!!
    doublement merci en fait, pour le #

    Tu me retire une vraie épine du pieds ! merci beaucoup !!!

  14. #14
    Invité
    Invité(e)
    Par défaut Rectification
    Citation Envoyé par GaspardBarrier Voir le message
    Bonjour,

    Le dernier code fourni plante si l'utilisateur annule la boite de dialogue. Le code ci-dessous teste la valeur de la boite de dialogue et continue si la variable Adresse est différente de vide.

    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
     
    Option Explicit
     
    Public Adresse As String
     
    Sub Test()
     
        Adresse = AdresseFichierExcel
        'Debug.Print "Adresse : " & Adresse
        If Adresse <> "" Then DocSource Adresse
     
    End Sub
     
    Function AdresseFichierExcel() As String
     
    Dim dlgOpen As FileDialog
     
        AdresseFichierExcel = ""
        Set dlgOpen = Application.FileDialog(fileDialogType:=msoFileDialogOpen)
        With dlgOpen
             .AllowMultiSelect = False
             If .Show = 0 Then
     
             Else
                AdresseFichierExcel = dlgOpen.SelectedItems(1)
             End If
        End With
        Set dlgOpen = Nothing
     
    End Function

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Re !

    Je reviens sur ce morceau de code parce qu'il ne fonctionne plus, depuis que j'ai fait quelques modification...

    J'ai fait évoluer le dossier excel, (grâce à une macro) en un fichier comprenant 5 onglets. L'objectif de cette opération est d'appliquer le petit programme sur lequel je travaille, à tous les onlets de mon fichier.
    (pour rappel : )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub DocSource1(ByVal Adresse2 As String)
     
     'ByVal signifie que lors de la passation d’un argument, celui-ci est évalué, et que seule sa valeur est prise en compte.
        'activation du document, puis du format d'étiquette
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
        ActiveDocument.MailMerge.OpenDataSource Name:=Adresse2, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
           WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, Connection:= _
           "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & Adresse2 & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System data" _
           , SQLStatement:="SELECT * FROM `Feuil2$`", SQLStatement1:="", SubType:=wdMergeSubTypeAccess
     
    End Sub
    Mais pour l'instant, ça ne marche plus et Windows me renvoie le message d'erreur :

    "Erreur d'exécution '9105':
    La chaine compte plus de 255 caractères"

    est ce que tu sais de quoi il s'agit ?

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

    Avez-vous essayé la manip en collant le fichier, actuellement sur le serveur, dans le même répertoire que votre fichier Word pour voir si votre problème vient de la longueur de l'adresse ?
    Je ne peux pas vous répondre sans voir votre fichier.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Oui j'ai essayé, mais ça ne marche pas non plus.

    Merci énormément pour vos conseils. Je vous envoie le fichier excel sur lequel je bosse. Je vous ai laissé les macros que j'utilise pour obtenir mes 5 onglets, en espérant que vous puissiez les lire.
    Comme c'est un document de ma société dans lesquelles sont enregistrées les coordonnées des clients de ma boite, j'espère que vous comprendrez que j'ai du effacer quelques information

    Merci beaucoup pour l'aide que vous m'apportez ! c'est vraiment cool

    Cordialement

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Je ne vous promets rien.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2018
    Messages : 38
    Points : 21
    Points
    21
    Par défaut
    Vous en avez déjà fait beaucoup, et je vous suis déjà reconnaissant pour votre aide

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GaspardBarrier Voir le message
    Si vous simulez manuellement un publipostage sur votre fichier et que vous essayez de voir ce qu'il y a dans la source, que constatez-vous ? Avez vous la possibilité de choisir votre onglet ? Qu'en déduisez vous ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Google Maps] Stocker les adresses dans une base mysql
    Par roy2work dans le forum APIs Google
    Réponses: 1
    Dernier message: 17/12/2013, 13h05
  2. [WD-MAC 2004] Publipostage avec les adresses dans un fichier Excel
    Par Alooha dans le forum Word
    Réponses: 2
    Dernier message: 03/02/2011, 05h13
  3. Réponses: 6
    Dernier message: 22/05/2007, 09h55
  4. modifier l'adresse d'un dll dans un .exe
    Par Mr Meuble dans le forum Windows
    Réponses: 4
    Dernier message: 02/03/2004, 16h39
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23

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