Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/06/2007, 15h40   #1
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
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 :
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]
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2007, 17h21   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
As-tu essayé en enregistrant la macro ? Abrégé, ça donne ça
NomFich = "D:\xls\TaListe.xls"
Code :
    ActiveDocument.MailMerge.OpenDataSource Name:= NomFich
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 08h10   #3
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
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" ?
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 09h30   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Regarde à Dialogs, dans l'aide.
Code :
    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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 11h52   #5
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
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 :
Dialogs(wdDialogMailMergeOpenDataSource).Show

merci

a+
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2007, 16h23   #6
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 11h23   #7
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
Bonjour,

J'ai une nouvelle question concernant ce sujet :

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

Code :
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
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2007, 11h39   #8
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
J'ai écrit ce code... mais ça ne marche toujours pas :-(

Code :
ActiveDocument.MailMerge.OpenDataSource Name:=Nom_FIchier, Format:=wdOpenFormatUnicodeText, ConfirmConversions:=False
La je ne comprends plus :-(

Help !

Damsmut
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 09h36   #9
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 11h31   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
Si c'est du txt, on peut toujours en faire un import en Word pour le mettre au format voulu.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 11h56   #11
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
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...
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 12h23   #12
Membre régulier
 
Inscription : juin 2006
Messages : 549
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 549
Points : 98
Points : 98
et voici mon code :

Code :
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...


????
damsmut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 12h30   #13
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 16h56   #14
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Pour répondre à ton mp, pour insérer des images par fusion, regarde ici
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 19h06   #15
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 352
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 352
Points : 29 265
Points : 29 265
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 19h44   #16
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
...............................................Pièce jointe 15565
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h30.


 
 
 
 
Partenaires

Hébergement Web