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 :

[VBA-Word] Fusion & Publipostage


Sujet :

VBA Word

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut [VBA-Word] Fusion & Publipostage
    Bonjour,

    J'ai créé une macro pour faire une fusion & publipostage automatique.

    Pour ouvrir la source des données voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveDocument.MailMerge.OpenDataSource Name:= _
            "C:\mes données.txt"  ...................

    Par contre je souhaiterais pouvoir choisir systématiquement un autre fichier de données.
    Comment faire pour ouvrir la fenêtre de sélection de la source de donnée ?

    Merci

    Damsmut

    je cherche... je cherche... mais je ne trouve rien :-(

    en fait on pourrait simplifier ma question comme suit :

    Comment faire pour ouvrir en VBA la fenêtre qui s'intitule : "Sélectionner la source de données"


    PS : j'ai oublié de stipuler : [Word 2003]

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    As-tu essayé en enregistrant la macro ? Abrégé, ça donne ça
    NomFich = "D:\xls\TaListe.xls"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveDocument.MailMerge.OpenDataSource Name:= NomFich
    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Oui j'y avait pensé, mais comment faire pour que la fenêtre de sélection manuelle s'ouvre, afin de se balder dans les différents répertoires... et de sélectionner le fichier et d'enregistrer son nom dans "NomFich" ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Regarde à Dialogs, dans l'aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Dialogs.Item(xlDialogOpen).Show
    Mais ceci ouvre le fichier.
    Tu as intérêt à utiliser une liste et à la remplir à l'aide de l'exemple donné dans l'aide en ligne à "Dir"
    Ta liste renseignée, tu pourras sélectionner le fichier de tes rêves.
    Des pbs ? Tu demandes

    Edit
    J'allais oublier, tu peux aussi utiliser cette méthode

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Merci tu m'as mis sur la voie,

    je ne savais pas qu'on avait acccès à toutes ces "dialogs"

    mais ton code ne marche pas...

    par contre j'ai trouvé ceci qui marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dialogs(wdDialogMailMergeOpenDataSource).Show

    merci

    a+

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par damsmut
    Merci tu m'as mis sur la voie,

    je ne savais pas qu'on avait acccès à toutes ces "dialogs"

    mais ton code ne marche pas...

    a+
    Tu as raison, c'était de l'Excel

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    J'ai une nouvelle question concernant ce sujet :

    Voici le code qui me permet d'ouvrir la source de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveDocument.MailMerge.OpenDataSource Name:= _
            "C:\mes données.txt"

    Par contre j'ai un soucis de conversion du fichier texte : --> il me le converti automatiquement en caractères japonais... alors que je le souhaiterais en normal.

    Il s'agit excatement du même problème q'ici :
    http://www.developpez.net/forums/showthread.php?t=64778


    J'aimerais bien que ce soit transparent... sans passer par la fenêtre de conversion.


    Pour une ouverture de fichier normal... il y'a l'option "encoding:=1252" qui permet cela...

    Mais comment faire avec "MailMerge.OpenDataSource" ???



    Merci d'avance

    Damsmut

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    J'ai écrit ce code... mais ça ne marche toujours pas :-(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.MailMerge.OpenDataSource Name:=Nom_FIchier, Format:=wdOpenFormatUnicodeText, ConfirmConversions:=False
    La je ne comprends plus :-(

    Help !

    Damsmut

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Peux-tu nous mettre un bout de ton fichier texte ? Si c'est confidentiel, modifie les noms dans notepad. Je n'ai jamais créé de fusion à partir d'un txt. Tu es sûr qu'il s'ouvre au format unicode ?
    A+

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Si c'est du txt, on peut toujours en faire un import en Word pour le mettre au format voulu.

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    voici le fichier txt.


    Code barre Utilisateur Centre coût
    Á1ÄßßÖ;1fÈ UTILISATEUR 1 PRODUCTION
    Á1Äß!Ö;1jÈ UTILISATEUR 2 PRODUCTION
    Á1Äß""Ö;1nÈ UTILISATEUR 3 PRODUCTION
    Á1ÄßßÖ;2mÈ UTILISATEUR 1 MAINTENANCE
    Á1Äß""Ö;2uÈ UTILISATEUR 3 MAINTENANCE
    Á1ÄßßÖ;3tÈ UTILISATEUR 1 MAGASIN
    Á1Äß!Ö;3xÈ UTILISATEUR 2 MAGASIN
    Á1Äß""Ö;3|È UTILISATEUR 3 MAGASIN



    En fait je souhaite importer ce fichier et ensuite pour le code barre j'utilise une police de caractère spécifique : code-128.


    L'objectif final est de créer des étiquettes...

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 622
    Points : 156
    Points
    156
    Par défaut
    et voici mon code :

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Sub Principal_CB_Utilisateurs()
     
        Etiquettes
        Données
        Mise_en_forme_Utilisateurs
     
    End Sub
     
     
    Sub Etiquettes()
     
        Application.MailingLabel.DefaultPrintBarCode = False
        Application.MailingLabel.CreateNewDocument Name:="C2163", Address:="", _
            AutoText:="", LaserTray:=wdPrinterManualFeed, ExtractAddress:=False, _
            PrintEPostageLabel:=False, Vertical:=False
     
    End Sub
     
     
    Sub Données()
     
        Dim Fichier_source As String
     
     
     
    Selection_fichier_source:
     
        With Application.FileDialog(msoFileDialogFilePicker)
            .Title = "Veuillez sélectionnez le fichier source BELOP"
            .AllowMultiSelect = False
            .Show
        End With
     
        Fichier_source = Application.FileDialog(msoFileDialogFilePicker).SelectedItems(1)
     
        'Si pas de fichier sélectionné alors terminer le programme
        If Fichier_source = "" Then
            End 'stopper la procedure
        End If
     
        'Contrôle du format
        If Right(Fichier_source, 4) <> ".txt" Then
            MsgBox "Le fichier d'étiquettes BELOP doit être un fichier texte (*.txt)", vbExclamation, "Format de fichier incorrect !"
            GoTo Selection_fichier_source
        End If
     
     
        ActiveDocument.MailMerge.OpenDataSource Name:=Fichier_source, Format:=wdOpenFormatEncodedText, ConfirmConversions:=True        ', ReadOnly:=False, LinkToSource:=True, Encoding:=1252
     
    End Sub
     
     
    Sub Mise_en_forme_Utilisateurs()
     
        ActiveDocument.MailMerge.MainDocumentType = wdMailingLabels
     
        ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
            , Text:="""Code_barre"""
        Selection.TypeParagraph
        ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
            , Text:="""Utilisateur"""
        Selection.TypeParagraph
        ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField _
            , Text:="""Centre_coût"""
        Selection.HomeKey Unit:=wdLine
        Selection.TypeText Text:="Centre de coût : "
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Font.Bold = wdToggle
        Selection.Font.BoldBi = wdToggle
        Selection.HomeKey Unit:=wdLine
        Selection.MoveUp Unit:=wdLine, Count:=1
        Selection.TypeText Text:="Utilisateur : "
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Font.Bold = wdToggle
        Selection.Font.BoldBi = wdToggle
        Selection.HomeKey Unit:=wdLine
        Selection.MoveUp Unit:=wdLine, Count:=1
        Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
        Selection.Font.Size = 36
        Selection.Font.Name = "Code-128"
        Selection.HomeKey Unit:=wdLine
        Selection.MoveDown Unit:=wdLine, Count:=1
        WordBasic.MailMergePropagateLabel
     
    End Sub


    Petite précision ce même code fait pour un autre fichier (comprenant + de colonnes... fonctionne parfaitement )...
    Je pense que l'outil de reconnaissance de caractère intégré Word s'emmele un peu les pédales.
    Si je rajoute un caractère spécifique de la langue française dans un champ du fichier texte : par exple : codé barres au lieu de codes barres...

    le programme fonctionne... word à bien fait la conversion...


    ????

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je n'ai jamais fait ce que préconise Heureux Oli mais si j'avais à faire çà, je passerais pas Excel (tu peux tout faire depuis Word et ce serait transparent)
    Consiste à ouvrir ton fichier sous Excel, séparateur " " puis à l'enregistrer en tant que classeur. Là, tu aurais ta base de données.

    Pour ton doc principal, tu le lies à ce classeur,
    manuellement tu insères les champs, tu mets ton champ "Code barre" au format de caractères.
    Il te reste à lancer la fusion.
    C'est un peu plus long que de le dire mais ici et là on a la totalité du code.
    Si Oli a une meilleure solution, n'hésite pas, ma solution est celle d'un pauv' gars qu'a jamais utilisé Word comme base de données ou alors y'a longtemps, ou alors qu'a oublié
    Les limites d'Excel : Ses 65536 lignes
    A+

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Pour répondre à ton mp, pour insérer des images par fusion, regarde ici
    A+

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    ...............................................Pièce jointe 15565

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

Discussions similaires

  1. Réponses: 50
    Dernier message: 12/06/2014, 14h48
  2. [fusion avec word] fusion pour publipostage (suite)
    Par Christophe93250 dans le forum Access
    Réponses: 17
    Dernier message: 13/01/2006, 11h47
  3. [fusion avec word] fusion pour publipostage via le mail auto
    Par Christophe93250 dans le forum Access
    Réponses: 6
    Dernier message: 06/01/2006, 16h27
  4. [VB6][VBA][WORD 2003] Fusion - Publipostage.
    Par L.nico dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/07/2005, 15h00

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