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

  1. #21
    Débutant  
    Citation Envoyé par Heureux-oli Voir le message
    J'ai mis le code parce que chez moi ça fonctionne !
    Tu peux me renvoie la base que je t'ai envoie avec les modifs que tu as fais comme sa je vourai voir mon ou mes erreurs.



    Citation Envoyé par Heureux-oli Voir le message
    J'ai une question, pourquoi ajoutes-tu la source de données au document en code et pas dans le document en document principal de fusion ?
    Je ne comprend pas ce que tu veux dire

  2. #22
    Rédacteur/Modérateur

    Si tu veux gagner en vitesse d'exécution, tu dois préparer le document et lui attacher la source de données, pour le publipostage, il suffit alors d'ouvrir le document et le tour est joué, c'est plus rapide et plus facile.
    Mais ç reste une question de goût.

    Si c'est pour faire du publipostage traditionnel, il vaut mieux le faire au départ du doc et pas de Access.

    http://heureuxoli.developpez.com/off...ipostage/#L4-C

    Si tu sauvegarde le document avant de terminer le publipostage, tu as un document principal de fusion.
    L'ouvrir et lancer la commande mailmerge.execute suffit.
    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 !

  3. #23
    Débutant  
    alors je vai d'explique mon projet

    je crée un programme sous access pour la gestion d'une entreprise de Maitre d'oeuvre. Ils sont ISO et donc ils doivent respecte des régles. Ils doivent tous utilisé les doc type ( les dernieres). Access me permet grace au stockage de donnée d'évite la resaisie + la gestion de documents lourd ( reunion de chantier, situation, Appel d'offre..). Donc chacun ouvre access et clique sur une impression d'une lettre (ici exemple Lettre confirmation d'intêret.doc) On réalise le publipostage de access a word et tout cela doit être pour utilisateur super simple et transparent. Et a la fin du publipostage ils doivent pouvoir modifier le courrier et ensuite l'enregistre comme si c'etait une lettre sans publipostage ( car il ne faut plus de lien avec access car on pourrai modifier des données dans access qui ne doivent pas être modifier quand on reouvre le fichier enregistre).

    Le code que j"utilise au début grace a un SEUL client de l'utilisateur réalisé le publipostage et crée un nouveau fichier word avec comme défaut ne m'actualise pas l'image.

    par rapport a ce que je vien de d'explique tu me conseil quoi? ( je te demande sa car peux être qu'il y a des solutions plus simple ou plus fluide mais il faut que je puisse avoir la gestion de la mise a jour de l'image et ce avec n'importe qu'elle version de word)

  4. #24
    Rédacteur/Modérateur

    Pour Word, l'utilisation de modèles est plus facile que de tout faire en Access.
    Au lieu d'ouvrir un document effectuer le publipostage, ajouter la source de données, fermer le document sans faire de sauvegarde.

    Le simple fait d'ouvrir un modèle Word élimine l'étape de fermeture du document, puisque c'est d'office un nouveau document qui est généré.
    Les modèles de document sont beaucoup plus facile à mettre en place, on peut les mettre sur un répertoire en lecture seule situé sur le réseau.
    Il est également possible d'effectuer certaines action lors de l'ouverture d'un modèle.
    Maintenant, pourquoi utilises-tu de publipostage, sachant que selon ce que tu explique tu ne vas avoir qu'un seul document à la fois et pas un grand nombre.
    Si c'est pour un seul document, il est beaucoup plus facile d'utiliser une méthode avec des signets.

    Si une méthode avec modèle est utilisée, les .dot fonctionnent aussi avec 2007. Une gestion centralisée des modèle est plus fluide, un seul document pour tout le monde et la mise à jour est plus transparente.

    Un des problèmes que je rencontre, c'est la distribution d'une application Access sur les postes. Lorsque j'installe une mise à jour, je dois le faire en plusieurs fois, certains pc n'étant pas on, je dois attendre qu'ils soient allumés.

    Mais c'est toujours une question de goût.
    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 !

  5. ###raw>post.musername###
    Débutant
    alors pour ma part pour les mise a jour j'ai crée sur le serveur un dossier ou l'on trouve la derniere version de ma base + tout les fichiers que je souhaite joindre.
    A l'ouverture de ma base je réalise un teste sur la version de la base. si une version est trourve j'avertir l'utilisateur et je copier le nouveau fichier VBS qui me fera la mise a jour et ensuite la base se ferme et le vbs prend la suite

    voila 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
    Private Sub Form_Open(Cancel As Integer)
    If VersionNo - NoVersion <> 0 Then
    'mise a jour du fichier vbs avant copier de la nouvelle base
      Dim oFSO As Scripting.FileSystemObject
    Dim source As String, destination As String
    Set oFSO = New Scripting.FileSystemObject
    source = "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\mise_a_jour_auto.vbs"
    destination = "C:\access_pc3d\mise_a_jour_auto.vbs"
    oFSO.CopyFile source, destination, True
     
        MsgBox "Une mise à jour de la base est disponible merci de cliquer sur ok la base va se mettre à jour"
     
        Shell "wscript " & "C:\access_pc3d\mise_a_jour_auto.vbs" & """"
        Application.Quit
    Else
    Set rsAlwaysOpen = CurrentDb.OpenRecordset("tbldummy")
    End If
    End Sub


    et le code du vbs :

    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
     
    '####################################################################
    '#  Permet l'installation d'une bdd d'un réseau vers user connectés #
    '####################################################################
     
    'pause avant le lancement 
    WScript.Sleep 3000
     
     
    'instance
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set net = CreateObject("Wscript.Network")
    Set WshShell = WScript.CreateObject("WScript.Shell")
     
    'Test si fichier éxistant sur serveur.
    If fso.FileExists ("\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\saisie base 3d.mdb") 			Then
     
    destination = "C:\access_pc3d\"
    'del dossier sauvegarde
    Dim oFSO,oFld
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    set oFld = oFSO.GetFolder(destination)
    'Parcours et efface tous les sous répertoires
    For Each oSubFld in oFld.SubFolders
      oSubFld.Delete false
    Next
    'Parcours et efface tous les fichiers directement sous le répertoire
    For Each oFile in oFld.Files
      oFile.Delete False
    Next
     
     
    'création du =dossier de sauvegarde
     Dim racine
     
    racine = "C:\access_pc3d\"
    Set FSO = CreateObject("Scripting.FileSystemObject") 
    fso.CreateFolder(racine & "\doc\")
     
     
     
     
     
     
     
        'Copie du Fichier du serveur vers le pc utilisateurs
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\saisie base 3d.mdb","C:\access_pc3d\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\Sécurité.mdw","C:\access_pc3d\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\modification base.txt","C:\access_pc3d\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\evenement_ribbon.XML","C:\access_pc3d\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\publipostage.mdb","C:\access_pc3d\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\mise_a_jour_auto.vbs","C:\access_pc3d\"
     
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\doc\Acte d'engagement.doc","C:\access_pc3d\doc\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\doc\Actions à mener avant démarrage travaux.doc","C:\access_pc3d\doc\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\doc\Procedure de gestion des fins de chantier.doc","C:\access_pc3d\doc\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\doc\Lettre confirmation d'intêret.doc","C:\access_pc3d\doc\"
    fso.CopyFile "\\Srv_3dmanager\3D_Informatique\ACCESBASE3D\mise a jour base\doc\Tenue des réunions de chantier.doc","C:\access_pc3d\doc\"
     
     
    	msgbox "mise à jour terminée"
     
     
    WshShell.Run """C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE"" ""C:\access_pc3d\saisie base 3d.mdb"" /WRKGRP ""C:\access_pc3d\Sécurité.mdw"""
     
     
     
    Else
     
        'Avertissement si fichier non éxistant
        msgbox "Problème rencontré lors de la connexion au serveur.", vbExclamation, "Mise à Jour"
     
    End If


    Comme tu peux voir a la fin du fichier VBS il me reouvre access. Comme sa c'est les utilisateur qui font les mise a jour quand ils ce connécte. Moi je ne fait la mise a jour que sur le serveur c'est plus simple. Tu en pense quoi??


    Alors pour mon probléme de mise a jour de l'image pour le publipostage.
    Je souhaite donc sur tes conseil prendre le type modele DOT peux du m'aide pour le code du publipostage. Je te redit ce que je souhaite :
    - l'utilisateur clique sur un bouton sous access.
    - le modele s'ouvre réalise le publipostage avec la mise a jour de l'image bien sur.
    - l'utlisateur pourra aprés modifier le texte et enfin quand il fermera il pourra enregistre cette lettre qui devient indépendant par rapport access.

    Peux tu m'envoi le fichier que j'avai joint plus haut pour comprendre mes erreur car je n'arrive pas a le faire merci.
    et dis moi ce que tu en pense de ma maniere de faire les mise a jour, pourquoi tu ne fait pas pareil pour toi?
      0  0

  6. #26
    Rédacteur/Modérateur

    Malheureusement, les fichiers sont à la maison.

    Je n'ai touché qu'au code du bouton et l'intégralité du code est dans mon post.

    Par exemple, je n'utilise pas de constante pour le fichier, mais une variable qui prend en compte l'endroit où se situe la DB.

    Je suppose que l'utilisateur utilise un formulaire pour déterminer les données qui seront utilisées pour la génération du document ?

    Dans ce cas, on peut facilement envoyer les données du formulaire dans le document sans publipostage, ce qui apporte une plus grande vitesse d'exécution.
    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. #27
    Débutant  
    je préfere garde le publipostage car toute les données ne sont par forcement dans le même formulaire.

    J'ai repris ton code mais j'ai encore des probléme :
    il m'ouvre un document1 avec la publication non réalise avec les champ visible «NOM_OPERATION» ....
    et il m'ouvre un deuxiéme document "lettres types1" avec les champ en code ouvert et non publie pourtant j'ai bien pris ton 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
    DoCmd.RunCommand acCmdRefresh
    DoCmd.SetWarnings False
     DoCmd.RunSQL "DELETE entreprise.* FROM entreprise IN 'C:\access_pc3d\publipostage.mdb';"
    DoCmd.RunSQL "INSERT INTO entreprise ( NUM_OPERATION, NOM_OPERATION, VILLE_OPERATION, DATE_CONTACT_DCE, NOM_ENTREPRISE, ADRESSE_ENTREPRISE, ADRESSEBIS_ENTREPRISE, VILLE_ENTREPRISE, CP_ENTREPRISE, NOM3D, ADRESSE3D, VILLE3D, CP3D, TEL3D, FAX3D, LOGO ) IN 'C:\access_pc3d\publipostage.mdb' SELECT OPERATION.NUM_OPERATION, OPERATION.NOM_OPERATION, OPERATION.VILLE_OPERATION, OPERATION.DATE_CONTACT_DCE, INTERVENANT_EXT.NOM_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSE_INTERVENANT_EXT, INTERVENANT_EXT.ADRESSEBIS_NTERVENANT_EXT, INTERVENANT_EXT.VILLE_INTERVENANT_EXT, INTERVENANT_EXT.CP_INTERVENANT_EXT, SOCIETE.NOM3D, SOCIETE.ADRESSE3D, SOCIETE.VILLE3D, SOCIETE.CP3D, SOCIETE.TEL3D, SOCIETE.FAX3D, SOCIETE.LOGO FROM SOCIETE INNER JOIN (INTERVENANT_EXT INNER JOIN OPERATION ON INTERVENANT_EXT.NUM_INTERVENANT_EXT = OPERATION.NUM_INTERV_PROMOTEUR) ON SOCIETE.NUM_SOCIETE_3D = OPERATION.NUM_SOCIETE_3D WHERE (((OPERATION.NUM_OPERATION)=[Forms]![Fiche Contact DCE]![NUM_OPERATION]));"
    DoCmd.SetWarnings True
    Dim DOC_WORD As String
    Dim oDoc As Object
    DOC_WORD = CurrentProject.Path & "\doc\Lettre confirmation d'intêret.dot"
    Dim oSel As Object
    ' Variable pour gérer l'objet Word
    Dim wdApp As Object    'ici
    ' Passer à la partie Publipostage
    Set wdApp = CreateObject("Word.Application")   'ici
    With wdApp
        ' Word est visible pendant les tests
        .Visible = True
        ' Ouvrir la lettre type
        .Documents.Add (DOC_WORD)
        ' Lier la lettre type à la source de données Access
        .activeDocument.MailMerge.OpenDataSource _
            Name:=CurrentProject.Path & "\publipostage.mdb", _
            SQLStatement:="SELECT * FROM [entreprise]"
         ' La fusion doit se faire dans un nouveau document
         .activeDocument.MailMerge.destination = wdSendToNewDocument
        ' Exécuter la fusion
        .activeDocument.MailMerge.Execute
        Set oDoc = wdApp.activeDocument
        .activeDocument.Fields.Update
     
        ' Redonner le focus à la lettre type et fermer sans enregistrer
        '.Documents.Open DOC_WORD
        '.ActiveDocument.Close wdDoNotSaveChanges
        End With
        Debug.Print oDoc.Name
        oDoc.Activate
     
        Set oSel = oDoc.content
        With oSel
            .Fields.Update
            .Fields.ToggleShowCodes
        End With
     
    wdApp.Visible = True
     
    'Set wdApp = Nothing
    Exit Sub

  8. #28
    Débutant  
    ok merci pour la base

    je l'ai ouvert clique sur le bonton pour lance le publipostage et la j'ai le même résultat deux document word ouvert "document1" et "lettres types1" ( avec le même probléme vu plus haut image non change et code des cham publie visible.

    Je poséde office 2007 et vista le probléme est la??

  9. #29
    Rédacteur/Modérateur

    J'ai travaillé sur 2007 et XP, le document1 ne pose pas de problème.
    Par contre, ce qui est surprenant c'est que l'image est bien actualisée chez moi.
    Le chemin de l'image est-il correct, parce que il me semble que pour l'image je l'avais mis en dur.
    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 !

  10. #30
    Débutant  
    j'ai bien modifier le chemin de l'image et j'ai bien laisse les " "

    Donc probléme du a vista??

  11. #31
    Rédacteur/Modérateur

    Non, je ne pense pas.
    Une dernière vérification

    Bouton Office
    Options Word
    Options Avancées
    Affichage
    Afficher les codes de champs plutôt que leur valeur ne doit pas être coché !
    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 !

  12. #32
    Débutant  
    ok vérification faite et la case n'est pas coche

    je vien de teste sous un ordi windows Xp et office 2007 même probleme

  13. #33
    Débutant  
    tu a trouve une solution?

  14. #34
    Rédacteur/Modérateur

    Désolé,

    J'ai pas de solution, je ne parviens pas à reproduire le problème, chez moi tout fonctionne.
    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 !

  15. #35
    Débutant  
    ok merci quand même

  16. #36
    Rédacteur/Modérateur

    Essaie de faire un essai avec un simple publipostage et une image comme renseigné dans les contributions pour voir !
    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 !