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 :

Fermer un document ouvert par Wdapp


Sujet :

VBA Word

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut Fermer un document ouvert par Wdapp
    Bonjour,

    J'ai ce code qui ouvre un fichier Word, lance le publipostage dans un nouveau document et tout fonctionne très bien (sauf que les deux fichiers sont en mode réduit). Mon problème est que le fichier d'origine reste ouvert :-/

    J'aimerais donc que le fichier d'origine se ferme après création du fichier avec publipostage et que le fichier avec publipostage s'ouvre au premier plan et non en réduit
    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
    Dim wdapp As Word.Application
     
    ' Démarrer Word
    Set wdapp = CreateObject("Word.application")
    With wdapp
           .Visible = True
     
          ' Ouvrir le document
         .Documents.Open CStr(varFile)
     
          ' Diriger le publipostage vers un nouveau document
         .ActiveDocument.MailMerge.Execute
     
     
    End With
     
    ' Fermer et libérer les objets
    Set wdapp = Nothing
    J'ai essayé
    Mais cela ferme le Word AVEC publipostage et non celui d'origine :-/

    Merci d'avance pour votre aide :-)

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    salut,

    tu peux partir avec une variable de type Word.Document
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim wddoc as Word.Document
     
    'dans ton With
    Set wddoc = .Documents.Open (CStr(varFile))
     
    'puis
    wddoc.Close
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Bonjour,

    Merci pour votre retour, mais je n"'y arrive pas...

    Le plus simple pour moi, si c'est possible est de pouvoir fermer un document Word identifié par son nom...

    J'ai essayé ceci, mais ça ne fonctionne pas... aucun effet :-/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .ActiveDocument.MailMerge.Execute
    .Documents.Close "TS - Rapport visite.docx"

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    je te compile les deux, ca devrait être OK

    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
    Dim wdapp As Word.Application
     
    ' Démarrer Word
    Set wdapp = CreateObject("Word.application")
    Dim wddoc as Word.Document
     
    With wdapp
           .Visible = True
     
          ' Ouvrir le document
    Set wddoc = .Documents.Open (CStr(varFile))
     
          ' Diriger le publipostage vers un nouveau document
         .ActiveDocument.MailMerge.Execute
     wddoc.Close
     
    End With
     
    ' Fermer et libérer les objets
    Set wdapp = Nothing
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2009
    Messages : 380
    Points : 134
    Points
    134
    Par défaut
    Merci :-)

    J'ai encore un problème de "comportement"...

    Voici 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
    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
    Private Sub Commande127_Click()
    ' PUBLI VBA
    On Error GoTo Macroetiquette_Err
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Rapport visite_Auto"
    DoCmd.SetWarnings True
    DoCmd.RefreshRecord
     
    'Ouverture du Word via une fenêtre de sélection
       Dim fDialog As Office.FileDialog
       Dim varFile As Variant
       Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
     
       With fDialog
     
          ' Allow user to make multiple selections in dialog box
          .AllowMultiSelect = False
     
          ' Set the title of the dialog box.
          .Title = "Please select one or more files"
     
          ' Clear out the current filters, and add our own.
          .Filters.Clear
          .Filters.Add "All Files", "*.DOCX"
     
          If .Show = True Then
     
             For Each varFile In .SelectedItems
             MsgBox "Le fichier Word va s'ouvrir, attendez quelques secondes..."
     
     
    ' Voici pour la déclaration du code :
    Dim wdapp As Word.Application
     
    ' Démarrer Word
    Set wdapp = CreateObject("Word.application")
    Dim wddoc As Word.Document
    With wdapp
           .Visible = True
     
          ' Ouvrir le document
         Set wddoc = .Documents.Open(CStr(varFile))
     
          ' Diriger le publipostage vers un nouveau document
         .ActiveDocument.MailMerge.Execute
         On Error GoTo SAVE_Err
         .ActiveDocument.Save
    wddoc.Close
    Goto next01
    SAVE_Err:
    MsgBox "Attention, vous n'avez pas sauvé votre rapport !?"
    next01: 
    End With
     
     
    ' Fermer et libérer les objets
    Set wdapp = Nothing
     
            Next
            End If
            End With
     
     
          GoTo finish
     
    '=========================
    Macroetiquette_Err:
    MsgBox "Erreur !"
    finish:
    End Sub
    Lors du lancement du code, j'aimerais avoir la proposition de sauvegarde du fichier avec publipostage et fermeture du fichier source.

    Avec le code présent, si je valide la demande de sauvegarde tout se passe bien, le fichier source se ferme, le fichier avec publipostage se retrouve au premier plan, par contre si je refuse la sauvegarde, le fichier source ne se ferme pas "enfin si...", le fichier sans publipostage, oui, mais pas la fenêtre Word), qui reste vide...

    Ps : si je retire la ligne .ActiveDocument.Save, le Word avec fusion reste en réduit...

    Si pas possible de gérer l'annulation de la sauvegarde, le truc serait alors de fermer le Word sans publipostage et de mettre au premier plan le Word avec publipostage :-)

    Des idées ? ;-)

Discussions similaires

  1. Réponses: 16
    Dernier message: 05/11/2013, 09h13
  2. Fermer une application ouverte par code
    Par kracter56 dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/03/2013, 14h08
  3. Réponses: 2
    Dernier message: 17/07/2011, 12h16
  4. [OpenOffice] problème de vérouillage de document ouvert par plusieurs utilsateur
    Par cpf2006 dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 12/03/2009, 10h00
  5. Réponses: 2
    Dernier message: 06/02/2007, 17h18

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