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

Access Discussion :

Exécuter un modèle word (.dot) mais pas l'ouvrir


Sujet :

Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut Exécuter un modèle word (.dot) mais pas l'ouvrir
    Bonjour,

    j'ai un modèle word (format .dot) que je voudrais lancer depuis Access. Pour le moment je n'arrive qu'à l'ouvrir.
    Pour moi je fais la différence entre :
    - ouvrir un fichier .dot qui permet de modifier un modèle (donc on travaille sur le .dot lui même)
    - exécuter une fichier .dot, qui en fait correspond à l'action nouveau et qui crée automatiquement un nouveau fichier word (format .doc).

    Je voudrais donc créer un fichier .doc depuis ce modèle, effectuer quelques modification (genre, sur mon modèle j'ai "Titre", le remplacer par une certaine valeur") puis enregister ce fichier word à un endroit bien précis.

    PS : j'utilise la méthode shellexecute...

    Merci.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour,

    Juste une piste.
    Je pense qu'il faut que tu crées ton document et que tu y attaches ensuite le modèle. Regarde
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WorkBook.AttachedTemplate = ...
    En espérant que cela t'aide.

    pgz

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 223
    Points : 240
    Points
    240
    Par défaut
    En m'inspirant de

    http://access.developpez.com/sources...ipostageSignet

    j'utilise cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     
    wdapp.Documents.Add Template:="C:\...le chmin de ton document...\tondocument.dot", NewTemplate:=False, DocumentType:=0
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdapp.Documents.Open "j:\Doc_Atelier\td138\td138_gdt.doc"
    et ca marche très bien

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    ok merci

    j'ai donc fait comme ca. Au début je voulais laisser ouvert le fichier word crée pour laisser la main à l'utilisateur. Mais si on ne ferme pas l'application word, on se retrouve avec des problèmes de concurence de fichier (lecture seule, fichier utilisé par une autre application)

    Donc au final, je crée le .doc, je ferme la wordApplication, et j'ouvre le fichier .doc


    Maintenant me reste à modifier le contenu de mon fichier word...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    j arrete pas de faire planter access.
    En gros j'ai fait une macro sous word qui fait appel à la fonction remplacer.
    Je copie le code dans Access (en défissant un objet wordApplication)... et ca plante tout

    Quelle est la meilleur méthode pour remplacer du texte dans un word existant ?

    merci

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    Je trouve pas l'erreur...

    ca plante sur la ligne ".Selection.Find.ClearFormatting" de ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Word_Remplacer_texte(Texte_à_remplacer As Variant, Texte_de_remplacement As Variant, Tout As Boolean)
      
    With Word_Application
        .Selection.Find.ClearFormatting
        .Selection.Find.Replacement.ClearFormatting
        With .Selection.Find
            .Text = Texte_à_remplacer
            .....

    cette fonction est appelée après la création du fichier .doc (qui marche) et la récupération du l'objet par cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Sub Word_Création_Lien_OLE()
     
    On Error Resume Next 
     
    Set Word_Application = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
       Set Word_Application = CreateObject("Word.Application")
    End If
     
    Err.Clear ' Efface l'objet Err au cas où une erreur s'est produite.
     
    End Sub
    Le problème peut venir du fait que le document word n'est pas actif à ce moment là (il est bien ouvert, il apparait à l'écran, mais c'est le formulaire access qui lance les procedures qui est considéré comme actif dans windows).

    J'ai essayé de passer par shellExecute puis getObject... mais ca me donne des incompatibilité de type.

    En gros, comment faire ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    HELP ME.

    Je n'y arrive toujours pas.
    J'ai essayé de passer par un autre moyen, cad, créer une macro dans mon modèle.
    Comme ca, le fichier .doc généré possède cette macro et je peux y faire appel. J'ai tester en appelant directement la macro sans paramètre et ca marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set wdapp = CreateObject("Word.application")
        wdapp.Visible = True
        wdapp.Documents.Add Template:=cheminModele, NewTemplate:=False, DocumentType:=0
        wdapp.Run MacroName:="remplacer"
        ...
    Sans paramètre ca marche nickel (les valeurs à rechercher et remplacer etant en dur dans la macro).

    Mais dès que je veux passer des paramètrescela me dit que je ne peux pas executer la macro, peu etre une histoire de guillement ou de type de méthode (pourtant j'ai déjà fait des ajout d'évènement sur des controls de facon dynamique, et la synthaxe des guillemet marchait). En gros ce truc plante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    wdapp.Run MacroName:="remplacer(""titre de la procédure"", ""XXXX"" )"
    ...
    Si quelqu'un avait ne serait ce qu'une idée...
    Merci

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 281
    Points : 209
    Points
    209
    Par défaut
    C'est bon, tous les exemples que j'ai pu voir n'avait pas de paramètre. En fait l'appel se fait différement, cad le nom comme 1er parametre, puis les parametre de la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call wdapp.Run("remplacer", "titre de la procédure", "XXXX")

    Merci bien.


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/04/2009, 10h19
  2. Extraire modèle word .dot
    Par jabadao dans le forum Word
    Réponses: 1
    Dernier message: 24/05/2007, 20h33
  3. comment faire fonctionner les macros d'un modèle Word (.dot)?
    Par chtibreizh62 dans le forum VBA Word
    Réponses: 2
    Dernier message: 18/12/2006, 14h18
  4. [VBA-W] un doc word copié mais pas ses signets
    Par toome dans le forum VBA Word
    Réponses: 6
    Dernier message: 24/05/2006, 11h19
  5. Réponses: 7
    Dernier message: 12/08/2005, 09h47

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