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 :

Inclure le mon de fichier automatique dans le document word [WD-2007]


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut Inclure le mon de fichier automatique dans le document word
    bonjour, il y a quelques mois j'ai créé un code avec l'aide de certains inscrit sur le forum, de sources extérieurs et un peu de bidouillage maison.

    ce code me permets de créer automatiquement le nom du fichier et de l'enregistrer dans le répertoire que je désire.

    voici le 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
    Sub Macro3()
     
    'Enregistrement auto du fichier sans espaces superflux
     
    attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then attention = "" Else attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " "
     
    contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " "
     
     
    fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " "
     
     
    designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " "
     
     
    agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " "
     
     
    service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " "
     
     
    Objet = ActiveDocument.Bookmarks("Objet").Range.Text
    Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text
     
    ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"
     
    End Sub

    maintenant en l'enregistrant de cette façon il conserve les options de publipostage se qui peut causer des désagréments, pour cela il faut donc "terminer et fusionner" le document.

    puisque je l’utilise pour la création d'un seul courrier à la fois, le publipostage n'est utile juste pour l'insertion des coordonnées du destinataire, des références client etc ... lorsque je termine et fusionne le document je choisie l'option modifier des documents individuels, puis enregistrement en cours.

    et là le document se renomme par défaut lettre1. les champs deviennent du texte et les signets disparaissent. je ne peux donc plus utiliser ce code qui utilise les champs et des signets.

    je pense donc garder ce code pour nommé et enregistrer le fichier de façon automatique, et je désire créer un autre code incluant cette méthode pour coller le nom du fichier quelque part sur le document de la couleur du fond du courrier; en blanc; pour que le nom du fichier soit invisible sur le document. puis enregistrer le fichier "lettre1" en utilisant par copier coller le nom du fichier qui est invisible et inclus sur le document. puis éventuellement effacer de nom de fichier invisible.


    je pense que je pourrais déjà commencer mon code de cette façon:

    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
    attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then attention = "" Else attention = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " "
     
    contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " "
     
     
    fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(4).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(4).Value & " "
     
     
    designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " "
     
     
    agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " "
     
     
    service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(7).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(7).Value & " "
     
     
    Objet = ActiveDocument.Bookmarks("Objet").Range.Text
    Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text


    et les utiliser dans cet ordre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & " - " & Envoie & " - " & Format(Date, "dd-mm-yyyy") & ".doc"

    mais je n'ai aucune idée de quelle commande mettre devant pour coller cette ligne, ni pour désigner l'endroit ou je désire coller cela.

    pensez vous que je pourrais coller cela dans l'entête ou le pied de page pour pouvoir le réutiliser ensuite lors de l'enregistrement via cette nouvelle macro ? je sais qu'il y a une option dans ces zones qui permets d'insérer le nom du fichier ce qui est différent de ce que je cherche a faire (lettre1 sera dans ce cas affiché et non le nom défini automatiquement, celui pourra effectivement y apparaitre mais après et seulement avoir été enregistré et ce n'est pas ce que je cherche à faire).

    si vous pouviez me donner vos avis ou m'apporter votre aide ça serais super cool merci a ceux qui m'apporteront leurs contributions.

  2. #2
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    Pour insérer du texte à l'emplacement de la sélection, la variable que tu auras défini comme nom de fichier à afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection.typetext monnomaffiché
    Il est aussi possible dans ton cas d'intégrer directement à l'emplacement les champs, lors de la fusion, ils seront remplacés.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  3. #3
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    je suis enfin arrivé a éditer le nom du fichier en ayant au par avant créé un signet que j'ai nommé "nomfichier" placé dans l'entête du document et en ajoutant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("nomfichier").Range.Text = "Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & Envoie & " - " & Format(Date, "dd-mm-yyyy")
    à la fin du code de base, là j'obtiens le même résultat que lorsque j'enregistre le fichier.


    intégrer directement à l'emplacement les champs
    et la copie des signets.

    est une solution que j'ai étudié. mais je me suis retrouvé dans le même cas que lorsque j'ai créé la base du code, pour éviter certains bugs d'incohérences et de présentations dans l'édition du nom de fichier il était impératif que je conserve les conditions d'éditions que j'avais définis. je pense même y ajouter une fonction de nettoyage de chaine de caractères non autorisés (dont j'ai déjà écris le code).

    avec cette solution que je viens de trouver le signet est supprimé totalement pour laisser place au nom du fichier. pour le sélectionner je pensais redéfinir le signet pour réutiliser lors de l'enregistrement du fichier. mais lorsque je termine et fusionne le document le signet est a nouveau supprimé.

    la solution serait de le recréé après la phase terminer et fusionner, que je pense aussi ingérer à mon code d'enregistrement du fichier afin de limiter les manipulations.

    pour ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selection.typetext monnomaffiché
    si j'ai bien compris il pourrais me servir pour sélectionner le signet "nomfichier" pour y inserrer à la place le nom de fichier à afficher définit par le code de base et nommé "monnomaffiché".

    dans ce cas cela me ferais rajouter deux lignes de codes et cela donnerait a peut près cela si j'ai bien compris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    monnomaffiché = "Courrier " & attention & contact & fonction & designation & agence & service & " - " & Objet & Envoie & " - " & Format(Date, "dd-mm-yyyy")
    selection.typetext monnomaffiché
    ActiveDocument.Bookmarks("nomfichier").Range.Text = monnomaffiché

    mais je vois pas bien l'intérêt, à moins que je n'en ai pas compris l'utilité et l'application.

    Si tu pouvais m'éclairer un peu plus sur ta solution carden752.

  4. #4
    Membre expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Points : 3 016
    Points
    3 016
    Par défaut
    Bonjour,

    pour ce code
    selection.typetext monnomaffiché
    L'idée était d'insérer le texte directement ave éventuellement l'attribut police masqué et la couleur identique à celle de fond,
    la fonction rechercher avec comme couleur de police la couleur de fond + éventuellement l'attribut police masqué permettrait ensuite de directement retrouver rapidement ce texte surtout si la recherche s'effectue sur la première page ou section par exemple.

    Plus besoin de signet dans ce cas!!
    Il te faudra juste à l'enregistrement lire cette zone présente sur chacun des courriers.


    Autre possibilité à laquelle je pense, définir une variable de documents comme ayant cette valeur, il sera alors possible de la réutiliser à chaque enregistrement directement.
    Cordialement,
    Christophe

    Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche

  5. #5
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    okay carden752 effectivement la suggestion est bonne je vais donc retravailler mon code pour intégrer cette commende
    selection.typetext
    en conservant la base de mon code actuel.

  6. #6
    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
    Salut,

    Pour masquer du texte, on peut tricher avec Word.
    Il suffit de mettre un taquet hors de la limite de la page.
    Pour voir le texte, on passe en mode brouillon.


    Pour mettre le taquet hors des limites, on ouvre la boîte de dialogue paragraphes, ensuite le bouton tabulation, on définit un taquet avec par exemple 25 cm.
    Le tour est joué.
    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 !

  7. #7
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    bonjour,

    merci Heureux-oli, je ne connaissais pas les taquets, dés que j'ai un moment je vais envisager cette solution, mais avant j'aurais une question à te poser.

    dans l'hypothèse ou je définit un taquet hors de la limite de la page comme tu me l'indique, il sera donc accessible en passant en mode brouillon.

    1 - si dans ce taquet je définit un signet, sera il supprimé comme les autres, lorsque je vais faire terminer et fusionner le document ?

    2 - le mode brouillon ne nécessite t-il pas l'édition (par défaut) d'un fichier *.tmp ?

    merci de tes réponses.

  8. #8
    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
    Salut,

    Le mode brouillon est juste un mode d'affichage différent du mode page.

    La solution du taquet, c'est juste pour masquer du texte sans modifier les propriétés du texte.
    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 !

  9. #9
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    je viens de penser a une autre solution.

    créer un entête sur la 1er page de mon document dans lequel sera insérer le nom de mon fichier, ce nom sera utiliser pour l"enregistrement du fichier:

    j'ai donc écris ce code pour inserer l'entête avec le nom du fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Sections(1).Header(wdHeaderFooterFirstPage).Range.Text =  attention & contact & fonction & designation & agence & service & " - " & Objet & Envoie & " - " & Format(Date, "dd-mm-yyyy")
    mais quand je l'exécute il ne se passe rien.

    et je cherche toujours une solution pour l'utiliser pour l"enregistrement du fichier.

    ca devrait donner un code du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nomdefichier =  ActiveDocument.Sections(1).Header(wdHeaderFooterFirstPage).Range.Text
    ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\Courrier " & nomdefichier

  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
    Salut,

    J'ai un peu de mal à suivre ta logique.

    Pourquoi insérer le nom dans le document pour faire une sauvegarde ensuite ?

    Si tu fais la sauvegarde, on peut mettre le nom dans le document à l'aide d'un champ FileName.
    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 !

  11. #11
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    pour cela il faut reprendre au début du poste ou j'explique le pourquoi.

    je vais développer un peu plus.

    j'ai créé un code qui permet de créer automatiquement le nom du fichier, à partir de champs et de signets contenus dans le document et de l'enregistrer dans le répertoire que je désire.

    en enregistrant le fichier de cette façon, il conserve les options de publipostage, les signets, les champs etc ... se qui cause des désagréments à l'impression, les champs vides ne sont pas visible à l'écran mais sont imprimés malgré avoir cocher l'option de non impression et en plus si quelqu'un venait à modifier accidentellement un ou plusieurs éléments précédemment cités cela falsifierait le documents qui est sensé être définitif .

    pour éviter cela il faut donc figer les données de publipostage, les signets, les champs etc ... pour qu'ils deviennent du texte.

    pour cela je fais "terminer et fusionner" le document. puisque je l’utilise pour la création d'un seul courrier à la fois, le publipostage n'est utile juste pour l'insertion des coordonnées du destinataire, des références client etc ... lorsque je termine et fusionne le document je choisie l'option modifier des documents individuels, puis enregistrement en cours. et là le document se renomme par défaut lettre1. les champs deviennent du texte et les signets disparaissent. je ne peux donc plus utiliser les champs et les signets dans le code puisqu'ils ont disparut dans "lettre1".

    il faut donc que je puisse coller le nom du fichier quelque part sur le document avant que je le termine et le fusionne, afin de pouvoir ensuite réutiliser ce nom de fichier au moment l'enregistrement du fichier qui est nommé "lettre1" part défaut.

    l’essentiel est que ce nom de fichier coller quelque part sur le document n'apparaisse pas à l'impression du document.

    c'est ainsi que m'est finalement venu l'idée d'utiliser l'entête et l'option d'impression qui permet de ne pas l'imprimer.

    j'ai déjà écris le code qui me permets de définir le nom du fichier.

    j'ai aussi fais quelques essaies pour insérer le nom du fichier dans l’entête du document: ayant préalablement créer un signet (nomfichier)[*] dans l'entête du document cela fonctionne et remplace le signet qui disparait ce qui n'est pas important vu qu'il disparaitra à l'étape suivante au moment ou je termine et le fusionne le document.

    maintenant il me faut que je récupère le texte se trouvant dans l’entête pour nommé le fichier lors de l'enregistrement.

  12. #12
    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
    Salut,

    Je ne sais pas comment est composé ton texte, mais pour récupérer des données dans l'entête d'un document, il faut y aller.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    activedocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text
    Cette ligne de code permet de récupérer le texte contenu dans l'entête d'un document.
    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 !

  13. #13
    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
    Salut,

    En y pensant, si tu n'as qu'un seul document, pourquoi ne pas mettre tes données dans une variable de document ?
    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 !

  14. #14
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    J'ai enfin réussie à écrire mon code, mais je rencontre maintenant une erreur d'autorisation d'accès au moment de l'enregistrement, je dois sûrement avoir un problème de retour à la ligne comme cela m'est déjà arrivé.

    dès que j'ai résolu cela je posterais mon code afin de mettre ce poste en résolue.

  15. #15
    Membre à l'essai
    Homme Profil pro
    AUTRE
    Inscrit en
    Mars 2014
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : AUTRE

    Informations forums :
    Inscription : Mars 2014
    Messages : 39
    Points : 17
    Points
    17
    Par défaut
    Ca y est j'ai enfin fini d'éditer mon code est tous fonctionne

    récapitulatif du contenu:

    1 - Créer le nom du fichier et le place dans l'entête du document via un signet


    a) Nomme et désigne une valeur contenue dans un champ qu'on désire intérger dans le nom du fichier

    - émet une condition pour ajouter un " " après la valeur du champ intégré dans le nom du ficheir, si le champ est vide sa valeur sera remplacer par "" suivit du caractère ""


    b) Récupère les valeurs contenues dans les signets qu'on désire intérger dans le nom du fichier

    - Nomme et désigne une valeur contenues dans un signet qu'on désire intérger dans le nom du fichier, cette valeur sera suivit des caractères " - "

    - Nomme et désigne le contenue dans un signet qu'on désire intérger dans le nom du fichier

    - émet une condition pour ajouter les caractères " - " après la valeur du signet intégré dans le nom du ficheir, si le signet est vide sa valeur sera remplacer par "" suivit du caractère ""


    c) selectionne le signet "nomdufichier" et le remplace par le nom du fichier qui inclus les caractères "Courrier " suivit des valeurs des champs et des signets désignés ci-dessus suivit des caractères " - Le " et de la date du jour sous la forme "dd-mm-yyyy"

    2 - Termine et fusionne le document

    3 - enregistre le fichier

    a) Récupère le nom du fichier qui a été créer dans l'entête du document

    b) supprime un eventuel retour à la ligne inclus dans le nom du fichier (utile en cas d'erreur au moment de l'enregistrement du fichier se traduisant par un problème d'autorisation d'accès au fichier"

    c) enregistre le fichier à l'emplacement "C:\Users\Corsaire 98\Documents\Courriers\" suivit de l'extension caractères ".doc" qui définissent l'extension du fichier

    4 - ferme le document index document1 sans enregistrer les éventuelles changements

    voici le 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
    Sub Enregistrer_Terminier_et_Fusionner_Courrier()
     
    ' Créer le nom du fichier et le place dans l'entête du document via un signet
     
     
        ' Nomme et désigne une valeur contenue dans un champ qu'on désire intérger dans le nom du fichier
     
    a = ActiveDocument.MailMerge.DataSource.DataFields(5).Value
     
             ' émet une condition pour ajouter un " " après la valeur du champ intégré dans le nom du ficheir, si le champ est vide sa valeur sera remplacer par "" suivit du caractère ""
     
    If ActiveDocument.MailMerge.DataSource.DataFields(5).Value = "" Then a = "" Else a = ActiveDocument.MailMerge.DataSource.DataFields(5).Value & " "
     
    fonction = ActiveDocument.MailMerge.DataSource.DataFields(8).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(8).Value = "" Then fonction = "" Else fonction = ActiveDocument.MailMerge.DataSource.DataFields(8).Value & " - "
     
    contact = ActiveDocument.MailMerge.DataSource.DataFields(6).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(6).Value = "" Then contact = "" Else contact = ActiveDocument.MailMerge.DataSource.DataFields(6).Value & " - "
     
    designation = ActiveDocument.MailMerge.DataSource.DataFields(1).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(1).Value = "" Then designation = "" Else designation = ActiveDocument.MailMerge.DataSource.DataFields(1).Value & " - "
     
    agence = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(2).Value = "" Then agence = "" Else agence = ActiveDocument.MailMerge.DataSource.DataFields(2).Value & " - "
     
    service = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
    If ActiveDocument.MailMerge.DataSource.DataFields(3).Value = "" Then service = "" Else service = ActiveDocument.MailMerge.DataSource.DataFields(3).Value & " - "
     
       ' Récupère les valeurs contenues dans les signets qu'on désire intérger dans le nom du fichier
     
               ' Nomme et désigne une valeur contenues dans un signet qu'on désire intérger dans le nom du fichier, cette valeur sera suivit des caractères " - "
     
    Objet = ActiveDocument.Bookmarks("Objet").Range.Text & " - "
     
                ' Nomme et désigne le contenue dans un signet qu'on désire intérger dans le nom du fichier
     
    Objet2 = ActiveDocument.Bookmarks("Objet2").Range.Text
     
                ' émet une condition pour ajouter les caractères " - " après la valeur du signet intégré dans le nom du ficheir, si le signet est vide sa valeur sera remplacer par "" suivit du caractère ""
     
    If ActiveDocument.Bookmarks("Objet2").Range.Text = " " Then Objet2 = "" Else Objet2 = ActiveDocument.Bookmarks("Objet2").Range.Text & " - "
     
    Objet3 = ActiveDocument.Bookmarks("Objet3").Range.Text
    If ActiveDocument.Bookmarks("Objet3").Range.Text = " " Then Objet3 = "" Else Objet3 = ActiveDocument.Bookmarks("Objet3").Range.Text & " - "
     
    Envoie = ActiveDocument.Bookmarks("Envoie").Range.Text
     
        ' selectionne le signet "nomdufichier" et le remplace par le nom du fichier qui inclus les caractères "Courrier " suivit des valeurs des champs et des signets désignés ci-dessus suivit des caractères " - Le " et de la date du jour sous la forme "dd-mm-yyyy"
     
    ActiveDocument.Bookmarks("nomdufichier").Range.Text = "Courrier " & a & fonction & contact & designation & agence & service & Objet & Objet2 & Objet3 & Envoie & " - Le " & Format(Date, "dd-mm-yyyy")
     
    ' Termine et fusionne le document
     
        With ActiveDocument.MailMerge
            .Destination = wdSendToNewDocument
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
                .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
            End With
            .Execute Pause:=False
        End With
     
    ' enregistre le fichier
     
        ' Récupère le nom du fichier qui a été créer dans l'entête du document
     
    nomdufichier = ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text
     
       ' supprime un eventuel retour à la ligne inclus dans le nom du fichier (utile en cas d'erreur au moment de l'enregistrement du fichier se traduisant par un problème d'autorisation d'accès au fichier"
    nomdufichier = Left(nomdufichier, (Len(nomdufichier) - 1))
     
       ' enregistre le fichier à l'emplacement "C:\Users\Corsaire 98\Documents\Courriers\" suivit de l'extension caractères ".doc" qui définissent l'extension du fichier
     
    ActiveDocument.SaveAs FileName:="C:\Users\Corsaire 98\Documents\Courriers\" & nomdufichier & ".doc"
     
    ' ferme le document index document1 sans enregistrer les éventuelles changements
     
    Documents("Document1").Activate
    ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
     
    End Sub
    j'ai eu des difficultés pour rendre le nom du fichier invisible.

    ayant essayer les méthodes que vous m'avez conseillé et n'ayant pas obtenu de bon résultats mais aussi suite a une manque de connaissances (ex inclure une variable, passer le document en mode brouillon etc ...)

    au finale, j'ai trouvé une solution n'utilisant pas les entêtes j'y est donc placé un caractère de taille 4 et de couleur blanche.

    je vous remercie tous de votre aide

    et reste en attente de vos commentaires avant de mettre le poste sur résolu.

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

Discussions similaires

  1. [WD-2003] Récupérer le texte des formes automatiques dans un document word
    Par Lise_ dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/04/2010, 18h23
  2. Réponses: 5
    Dernier message: 13/05/2009, 11h05
  3. inserer un nom de fichier automatiquement dans un fichier
    Par cobra85 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 16/04/2009, 11h02
  4. Réponses: 0
    Dernier message: 03/12/2008, 16h43
  5. Déposer un fichier automatiquement dans une list sharepoint
    Par nico18987 dans le forum SharePoint
    Réponses: 7
    Dernier message: 22/12/2007, 12h19

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