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

Macros et VBA Excel Discussion :

Ouvrir un document word, remplir les signets, et l'enregistrer dans un autre dossier sous un autre nom [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut
    bonjour,

    Comme le dit le titre je cherche à réaliser cet ensemble d'opérations lors d'une phase de mon programme.
    J'ai trouvé ce code que j'ai adapté pour mes besoins :

    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
    Sub pjauto(DICT As String)
     
    nomfich = ActiveWorkbook.Path
    SourceFichier = ActiveWorkbook.Path & "\ARCHIVE\courtype\aremplir\"
    If DICT = "avec" Then SourceFichier = SourceFichier & "arretecircdict.doc"
    If DICT = "sans" Then SourceFichier = SourceFichier & "arretecircsansdict.docx"
    'remplir la pièce jointe, l'enregistrer et la joindre
     
        'nécéssite d'activer la référence Microsoft Word xx.x Object Library
     
    Set WordApp = CreateObject("word.application") 'ouvre session word
    Set WordDoc = WordApp.Documents.Open(SourceFichier) 'ouvre document Word
    'WordApp.Visible = False 'word masqué pendant l'operation
     
    If DICT = "avec" Then
        Load paramsaisir
            paramsaisir.titre.Caption = "PRECISEZ HORAIRE D INTERVENTION et RENDEZ VOUS:"
            paramsaisir.boutsais.Caption = "VALIDER"
            paramsaisir.yesno.Visible = True
            paramsaisir.Opt1.Caption = DOSSIER.saisidaterdv.Value
            paramsaisir.Opt2.Caption = DOSSIER.saisidaterdv2.Value
        paramsaisir.Show vbModal
     
        If paramsaisir.Opt1.Value = True Then nom = paramsaisir.Opt1.Caption
        If paramsaisir.Opt2.Value = True Then nom = paramsaisir.Opt2.Caption
     
        nom = nom & " " & paramsaisir.saisi.Value
     
        Unload paramsaisir
     
    '    i = DOSSIER.Controls("saisiauto" & contactcreer.numauto.Caption).Value
        nom1 = DOSSIER.Controls("autonom" & contactcreer.numauto.Caption).Value
     
        WordDoc.Bookmarks("date").Range.Text = Date
        WordDoc.Bookmarks("client").Range.Text = DOSSIER.saisiclient.Value
        WordDoc.Bookmarks("interv").Range.Text = nom
        WordDoc.Bookmarks("mairie").Range.Text = nom1
        WordDoc.Bookmarks("adresschant").Range.Text = DOSSIER.saisiadress.Value
    End If
     
    If DICT = "sans" Then
        Load paramsaisir
            paramsaisir.titre.Caption = "SOUHAITEZ VOUS TRAVAILLEZ EN : "
            paramsaisir.saisi.Visible = False
            paramsaisir.yesno.Visible = True
            paramsaisir.boutsais.Caption = "VALIDER"
            paramsaisir.Opt1.Caption = "DEMI-CHAUSSEE"
            paramsaisir.Opt2.Caption = "RUE BARREE"
        paramsaisir.Show vbModal
     
        WordDoc.Bookmarks("date").Range.Text = Date
        If paramsaisir.Opt1.Value = True Then WordDoc.Bookmarks("chauss").Range.Text = paramsaisir.Opt1.Caption
        If paramsaisir.Opt2.Value = True Then WordDoc.Bookmarks("chauss").Range.Text = paramsaisir.Opt2.Caption = "RUE BARREE"
        Unload paramsaisir
     
    End If
     
    WordApp.Visible = True 'affiche le document Word
    'WordDoc.PrintOut 'imprimer
    WordDoc.SaveAs (nomfich & "\courrier\p.Doc")
    WordDoc.Close  'ferme le document word en sauvegardant les données
    WordApp.Quit 'ferme la session Word
     
    'désactive les variables type object
    Set WordApp = Nothing
    Set WordDoc = Nothing
     
    End Sub
    Mon problème lorsque je retire la ligne 13 (masque le doc) est qu'une fenêtre word apparaît me disant que le fichier est déjà utilisé et que je ne peux l'ouvrir en lecture seulement !!!
    Mon code ne s'arrête pas et fini par beugé à la ligne 35 ou 52 lorsque j'essaye de remplir les signets !!!!
    J'ai vérifié les fichiers et il ne sont pas vérouillés en lecture donc le problème vient du code !!!!!

    Avez vous une solution ????

    J'ai trouvé cette discussion mais je n'utilise pas les filedialog car je souhaite modifier mon document.
    http://www.developpez.net/forums/d12...nt-word-excel/

    Cette discussion n'est pas résolue donc j'avance peu.

    petite précision qui a son importance pour votre analyse

    mes variables sont toutes déclaré en début du module (plusieurs sub dans ce module)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
    Dim SourceFichier As String
    Dim nomfich As String
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim nom As String
    Dim nom1 As String

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Commence par ouvrir le gestionnaire de tâches et vire toutes les sessions de Word. Quand une macro plante, l'instance de Word reste quand même active.

    Ensuite va voir là:

    http://club.developpez.com/regles/#LIV-H
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut
    bonjour,

    Malgrès la réinitialisation dans le gestionnaire des taches je plante au même endroit
    J'ai une erreur sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.Bookmarks("client").Range.Text = DOSSIER.saisiclient.Value
    L'erreur est : erreur d'éxécution 5941, le membre de la collection requis n'existe pas

    Par contre la ligne juste avant qui saisit la date du jour n'a pas buggé ??????
    La textbox Dossier.saisiclient.value contient bien la valeur que je souhaite (nom + prénom)

    Avez vous une idée ?


    Merci pour votre aide

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Est-ce que le signet existe toujours ?
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Points : 106
    Points
    106
    Par défaut
    bonsoir,

    Est-ce que le signet existe toujours ?
    J'avais vérifié et je viens de vérifier à nouveau et le signet existe toujours.
    Comme il y a 2 fichiers WORD, j'ai vérifié que j'ouvre le bon fichier et qu'il contienne les signets.

    Je viens de trouver l'erreur, cela provient de l'appel du fichier : j'utilisait les signes du courrier que je ne n'ouvrais pas !!!!
    Quelle tête de nul

    Merci pour votre aide

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/07/2006, 16h08
  2. Ouvrir un document word dans une application java
    Par serialkilled dans le forum API standards et tierces
    Réponses: 14
    Dernier message: 02/06/2006, 18h48
  3. [Word] Ouvrir un document Word en PHP
    Par Bart51 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 22/05/2006, 08h46
  4. Ouvrir un document word ou excel en php
    Par Taz_8626 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/03/2006, 17h40
  5. [Access][VBA] Ouvrir un document word existant
    Par NicoNGRI dans le forum Access
    Réponses: 1
    Dernier message: 16/12/2005, 12h39

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