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 10/03/2008, 12h07   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 4
Points : 0
Points : 0
Par défaut Fusion Word: deux fichiers de données dans un seul document

Bonjour,

Je ne suis pas trés doué dans la programmation...

J'ai deux fichiers de données:
- un fichier Excel contenant la liste des noms, fonctions et services
- un fichier du type CSV contenant les données
à integrer dans la macro d'un modèle (dot ou doc).
(il peut y avoir plusieurs modèles par service mais ce qui m'interesse est la récupération des noms par service de façon à n'intervenir que sur un seul fichier Excel pour les mouvements)

Comme il y a plusieurs services et plusieurs noms, on insere les noms et leurs intitulés dans les entêtes (un peu comme la liste de medecins dans un service).
Je rappelle: comme il y a du mouvement, le fichier Excel est la base qui permet d'être à jour.
Cette méthode pourrait être automatiquement fusionnée avec un point commun entre les deux fichiers (les services ont leur numéro).

J'aimerai savoir comment integrer les deux fichiers de données dans un document aprés fusion CAD le fichier CSV contient un numéro de service qui permet de récuperer la liste des noms et leurs informations depuis le fichier Excel pour l'entête ?

J'espère d'être précis dans mes explications ...
Merci pour votre aide!
Cordialement,
David
dptech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2008, 13h25   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Pourquoi deux fichiers ?
Et pourquoi un fichier excel et un fichier csv.

As-tu un exemple des données contenues et l'endroit où tu veux les mettre ?
__________________
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 10/03/2008, 13h51   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 4
Points : 0
Points : 0
Par défaut Excellente question!

Bonjour,

Merci de votre rapidité,

C'est tout simplement que c'est la direction des ressources humaines qui gere le fichier Excel, je n'ai qu'un droit d'accès en lecture (de toute façon, le contenu m'interesse, pas le reste).
Le contenu est le suivant:
Nom_Prenom,fonction,N°_Service,Libelle_service

Le chemin est connu mais une copie du xls peut-être effectué par le progiciel ou la macro lui-même dans le /temp local du progiciel!

Et le fichier de type CSV est issu du progiciel spécifique auquel je ne suis que l'utilisateur...
Ceci est un gros fichier au format CSV (separateur ";")...
Copié dans le /temp local

Pour ça, deux lignes contenant .Path et .Name suffiraient!
Ce qui fait que j'ai un emplacement à récuperer et un autre pour regrouper l'ensemble de données ...
Voici la macro qui fonctionnait pour le progiciel et le fichier CSV et j'aimerai integrer le fichier XLS en mettant la ligne du style pour :

CSV.Numero_service = XLS.Numero_service alors afficher XLS.Numero_Service.liste_noms


--------------------------------------------------------------------------
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
 
Sub AutoOpen()
'
' AutoOpen Macro
'
 
    Dim o As Object
    Dim strNomMod As String
    Dim strNomModsExt As String
    Dim strPathDef As String
 
    Set o = ActiveDocument
    strNomMod = o.Name
    strNomModsExt = Left(strNomMod, InStr(strNomMod, ".") - 1)
    strPathDef = ActiveDocument.Path
    fil$ = strPathDef + "\" + strNomMod
 
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        strPathDef + "\" + strNomModsExt + ".csv", ConfirmConversions:=False, ReadOnly:=False _
        , LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:="", _
        PasswordTemplate:="", WritePasswordDocument:="", WritePasswordTemplate:= _
        "", Revert:=False, Format:=wdOpenFormatAuto
 
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .MailAsAttachment = False
        .MailAddressFieldName = ""
        .MailSubject = ""
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = wdDefaultFirstRecord
            .LastRecord = wdDefaultLastRecord
        End With
        .Execute Pause:=False
    End With
    'MsgBox (strPathDef + "\f_" + strNomModsExt + ".doc") --> ligne vérification chemin+fichier
    ActiveDocument.SaveAs (strPathDef + "\f_" + strNomModsExt + ".doc")
    o.Close (wdDoNotSaveChanges)
 
End Sub
--------------------------------------------------------------------------

J'espère que tu comprendras pourquoi!

Cordialement,
David

ps: j'oubliais, il s'agit encore de la version Office 2003! Je ne crois pas que l'on passera à la version 2007 de sitôt!
dptech est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2008, 15h24   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
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 354
Points : 29 270
Points : 29 270
Si tu pouvais détailler tes besoins un peu mieux, parce que là c'est juste un publipostage en Word.

Et au vu de ta question, je ne pense pas que ce soit ce que tu veux obtenir.

Les données, doivent elles être triée en fonction du service, ou sont-elles toujours issues de la même plage Excel.
__________________
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 10/03/2008, 16h12   #5
Invité de passage
 
Inscription : décembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 4
Points : 0
Points : 0
Citation:
Envoyé par Heureux-oli Voir le message
Si tu pouvais détailler tes besoins un peu mieux, parce que là c'est juste un publipostage en Word.

Et au vu de ta question, je ne pense pas que ce soit ce que tu veux obtenir.

Les données, doivent elles être triée en fonction du service, ou sont-elles toujours issues de la même plage Excel.
C'est dans le XLS que les données doivent être triées en fonction du service et extraite en fonction de CSV.numero_service (il n'y en a qu'un). En gros, c'est extraire l'ensemble de données ayant le N° service comme dénominateur commun avant de lancer le publipostage comme tu dis!
Ca veut dire pour moi que je doive extraire les données CSV en premier et le XSL en deuxième avec la condition déjà cité plus haut pour réecrire l'ensemble de données extraites dans un autre fichier texte, c'est bien ça ?

Désolé de ne pas être précis mais c'est vraiment ça que je voulais et je crois que c'est suffisamment précis !

@+
dptech est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h48.


 
 
 
 
Partenaires

Hébergement Web