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 :

Fermeture de Processus Word via Macro VBA Excel [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut Fermeture de Processus Word via Macro VBA Excel
    Bonjour,

    J'utilise un macro pour exporter le contenu de cellules vers Word...Le code marche bien.
    Cependant, elle m'ouvre autant de processus WINWORD qu'elle créé de fichiers et elle ne les fermes pas (alors que les fichiers ne sont pas ouverts).
    Comment faire pour, soit éviter l'ouverture de tous ces processus, soit forcer leur fermeture via la macro?

    D'avance merci.




    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
    ' Création document
            Set FichierWord = CreateObject("Word.Application")
            FichierWord.Documents.Add
            ' Ecriture dans document
            FichierWord.Selection.TypeText "Dim db As Database"
            FichierWord.Selection.TypeText "Set db = CurrentDb"
     
            Range("K" & alpha & ":K" & beta).Select
            Range("K" & alpha & ":K" & beta).Copy
            ' Ecriture dans document
            FichierWord.Selection.PasteSpecial
            'déselectionne la zone qui est en mode copy
            'Application.CutCopyMode = False
     
            Range("J" & alpha & ":J" & beta).Select
            Range("J" & alpha & ":J" & beta).Copy
            ' Ecriture dans document
            FichierWord.Selection.PasteSpecial
            'déselectionne la zone qui est en mode copy
            'Application.CutCopyMode = False
     
            'Ouverture
            'FichierWord.WindowState = wdWindowStateMaximize
            'FichierWord.Visible = False
     
    alpha = alpha + lastlineDivideRounded
    beta = beta + lastlineDivideRounded
    Ext = Ext + 1
    delta_inc = delta * Ext
    gamma = lastline + delta_inc
     
    '
    '
    ' Sauvegarde
    FichierWord.ActiveDocument.SaveAs "C:\" & Ext

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,

    Autant tui lui dit "d'ouvir" du Word tu ne lui dit pas de le fermer
    Place ceci après ton save as:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set FichierWord = Nothing
    A+
    N'oubliez pas le si votre problème est solutionné.

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,


    un exemple à adapter :

    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
    Sub essai_nouveau_document()
    ' http://www.developpez.net/forums/d829421/logiciels/microsoft-office/excel/macros-vba-excel/fermeture-processus-word-via-macro-vba-excel/
    Dim WrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim Chemin As String
     
    Chemin = "X:\xxx\yyy\monFic.doc" 'a adapter
     
    Set WrdApp = CreateObject("Word.Application")
    Set wrdDoc = WrdApp.Documents.Add
     
    WrdApp.Visible = True
    ' le code du traitement dans word 'a adapter
    wrdDoc.SaveAs Chemin
    wrdDoc.Close
    WrdApp.Quit
    End Sub

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    J'ai utilisé un mix de vos 2 methodes
    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
     
    ''''''''''''''''''''''''''''''
    ' DEFINITION VARIABLES       '
    ''''''''''''''''''''''''''''''
    Dim lastline As Single
    Dim lastlineDivide, delta, delta_inc As Single
    Dim FichierWord As Object
    Dim alpha, beta, Ext, lastlineDivideRounded As Integer
    Dim WrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim Chemin As String
     
    ''''''''''''''''''''''''''''''
     
    Sheets("Données").Select
     
    ''''''''''''''''''''''''''''''
    ' INITIALISATION VARIABLES   '
    Ext = 1
    lastline = Range("K2").End(xlDown).Row
    lastlineDivide = lastline / 10
    alpha = 2
    lastlineDivideRounded = Round(lastlineDivide, 0)
    beta = lastlineDivideRounded
    delta = beta - lastlineDivide
    MsgBox "Nombre de lignes à traiter " & lastline
    MsgBox "Nombre de lignes par fichier Word: " & lastlineDivideRounded
    ''''''''''''''''''''''''''''''
     
    ''''''''''''''''''''''''''''''
    ' INITIALISATION VARIABLES   '
    ''''''''''''''''''''''''''''''
    Do
            ' Création document
            Set FichierWord = CreateObject("Word.Application")
            FichierWord.Documents.Add
            ' Ecriture dans document
            FichierWord.Selection.TypeText "Dim db As Database"
            FichierWord.Selection.TypeText "Set db = CurrentDb"
     
            Range("K" & alpha & ":K" & beta).Select
            Range("K" & alpha & ":K" & beta).Copy
            ' Ecriture dans document
            FichierWord.Selection.PasteSpecial
            'déselectionne la zone qui est en mode copy
            'Application.CutCopyMode = False
     
            Range("J" & alpha & ":J" & beta).Select
            Range("J" & alpha & ":J" & beta).Copy
            ' Ecriture dans document
            FichierWord.Selection.PasteSpecial
            'déselectionne la zone qui est en mode copy
            'Application.CutCopyMode = False
     
            'Ouverture
            'FichierWord.WindowState = wdWindowStateMaximize
            'FichierWord.Visible = False
     
    alpha = alpha + lastlineDivideRounded
    beta = beta + lastlineDivideRounded
    Ext = Ext + 1
    delta_inc = delta * Ext
    gamma = lastline + delta_inc
     
     
     
    '
    '
    ' Sauvegarde
    FichierWord.ActiveDocument.SaveAs "G:\Partage\TMA\Bdd GB85\10 - Base de Données Access\Fiabilisation_Import_VBA_" & Ext
    FichierWord.ActiveDocument.Close
    FichierWord.Quit
    Loop Until beta > gamma
    Et ça marche parfaitement!

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,

    Et ça marche parfaitement!

    Ok, super juste une remarque, en VBA tu ne peux déclarer tes variables par lot, elles doivent toutes être déclarées sinon elles sont de type variant :

    J'ai corrigé les deux lignes en cause

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim lastlineDivide As Single, delta As Single, delta_inc As Single
    Dim alpha As Integer , beta As Integer, Ext As Integer, lastlineDivideRounded As Integer
    deuxieme remarque

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Ok merci!
    Je modifie cela sur le champs!

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

Discussions similaires

  1. [VBA] [5.1.8] Créer une requête BO (via Macro depuis Excel)
    Par Bretonnie dans le forum SDK
    Réponses: 6
    Dernier message: 08/04/2015, 18h20
  2. [Toutes versions] Importer données dans fichier Excel via macro VBA
    Par JEREMY01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/07/2012, 23h13
  3. [XL-2007] Gestion de document Word via macro VBA excel
    Par guiMM dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/10/2011, 15h30
  4. Réponses: 10
    Dernier message: 05/04/2011, 17h27
  5. Réponses: 2
    Dernier message: 07/09/2010, 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