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 :

Imprimer un document word depuis Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Imprimer un document word depuis Excel
    Bonjour à vous, je souhaiterais créer un bouton qui permettrait l'impression de plusieurs documents word et excel.

    Pour cela j'ais farfouillé un peu partout et suis arrivé à ce bout de 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
    Private Sub CommandButton4_Click()
     
    Dim InstanceWord As New Word.Application
    Dim appWD As Word.Application
     
    Dim strFichier As String
    Dim objWord As New Word.Application
    Application.DisplayAlerts = True
     
    strFichier = "L:\document1.doc"
    Application.DisplayAlerts = True
     
    ' ouvrir un document Word
    objWord.Documents.Open strFichier
     
    ' rendre Word visible
    objWord.Visible = False
     
    ActiveDocument.PrintOut
     
    ' fermer le document
    objWord.Documents(1).Close
     
    ' quitter l'application Word
    objWord.Quit
     
    ' libérer la mémoire
    Set objWord = Nothing
     
    Application.DisplayAlerts = False
     
     
    'ChDir "L:\"
     
    '    Workbooks.Open Filename:="L:tableur3.xls"
    'ActiveWorkbook.PrintOut
     
    '    Workbooks.Open Filename:="L:\Tableur.xls"
    'ActiveWorkbook.PrintOut
     
     
    End Sub
    ( les chemins et les noms de fichiers sont corrects. l'impression des fichiers excels fonctionne aussi )

    Seulement, pour le document word, il m'affiche la boite de dialogue concernant la lecture seule, dont j'aimerais me passer ( ce code doit pouvoir fonctionner malgré que le document soit ouvert )

    Sachant que j'exécute ceci sur une feuille d'un classeur excel, comment imprimer aussi la feuille en question, mais pas les autres ?

    Merci de votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    En attendant une réponse sur la désactivation temporaire de la textbox de la lecture seule ( avec les options "lecture seule", "notifier" et "annuler" ) j'ais poursuivi et l'impression se fait correctement.

    Pour imprimer la feuille où est le bouton, dois je mettre un ActiveSheet.PrintOut ?

  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,

    Il me semble que tu as inversé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = True

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    En effet, la textbox de la lecture seule ne s'affiche plus \o/

    Suite à l'impression je désire les sauvegarder dans un dossier que la macro devra au préalable créer, avec pour nom de dossier la valeur d'une cellule.

    j'ais tenté un mkdir pour créer le dossier, sans succès :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cells(11, 2).Select
    MkDir "L:\dossier"
    ChDir "L:\dossier"
    NomRep = "L:\dossier\pouet" & ActiveCell.Value
    MkDir NomRep
    Je me demandais aussi comment coder le fait que si le dossier est déjà existant, il devra écraser ( en demandant confirmation ) le dossier existant.
    j'ais trouvé pour la sauvegarde, il ne me manque donc que la création et la gestion des dossiers déjà existant.

    Autre question, je n'arrive pas à résoudre mon erreur 462 lors d'une seconde exécution de mon code :s

    Auriez vous une idée sur mon souci ?

  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
    Pour tester si le dossier existe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function DossierExiste(NomDossier As String) As Boolean
        DossierExiste = Dir(NomDossier, vbDirectory) <> ""
    end function
    Ici il me semble qu'il manque un slash :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomRep = "L:\dossier\pouet" & ActiveCell.Value

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    Merci tout marche nickel

    J'ais néanmoins une erreur 4248 pour la sauvegarde, j'ais chercher un peu mais sachant que je ne peux pas toucher aux documents que je sauvegarde, comment faire?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appWD.ActiveDocument.SaveAs NomRep & "\doc1.doc"

  7. #7
    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
    Quand tu as un doute ou un plantage tappes le nom dans l'editeur et fait F1 dessus, le code VBA est assez bien documenté, pour saveas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NewBook.SaveAs Filename:=fName


  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    J'avais déjà testé avec un "filename" mais ça me renvois la même erreur, d'ou mon interrogation ici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appWD.ActiveDocument.SaveAs Filename:=(NomRep & "\doc1.doc")
    Je pense que ça a rapport avec le NomRep, l'ennui c'est qu'il n'est pas définitif, donc je suis obligé de l'utiliser tel quel comme chemin pour sauvegarder.

  9. #9
    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
    Erreur d'exécution '4248' :

    Cette commande n'est pas disponible car aucun document n'est ouvert.

    Un de ces messages d'erreur peut s'afficher lorsqu'aucun document n'est ouvert ou que le document auquel vous faites référence n'est pas ouvert. Word peut uniquement modifier les propriétés d'un document ouvert (ou visible).

    Remarque Ces messages d'erreur peuvent aussi apparaître si vous avez ouvert le document avec la propriété Visible définie sur False.


    Peut être que le problème vient de la :

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 16
    Points
    16
    Par défaut
    l'ennui c'est qu'en le mettant visible il me ressort la text box sur la lecture seule, malgré le "Application.DisplayAlerts = True"

    dois je le mettre visible uniquement pour la sauvegarde ?

    Par quoi remplacer le "activeDocument" ?

    Je galère un petit peu, désolé si je ne suis pas très clair

    J'ais pensé à une autre approche pour la sauvegarde, à savoir créer un document vierge dans le dossier de mon choix, et ensuite faire un copier coller du document à copier sur le document vierge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set WordApp = CreateObject("word.application")
    Set WordDoc = WordApp.Documents.Open("NomRep\docvierge.doc")
     
    FileCopy "L:\dossier1\documentàcopier.doc", "NomRep\docvierge.doc"
    Mais j'ais une erreur 70, permission refusé :/

  11. #11
    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
    La syntaxe ici n'est pas bonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appWD.ActiveDocument.SaveAs Filename:=(NomRep & "\doc1.doc")
    Mais plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim CheminComplet as string
    CheminComplet = NomRep & "\doc1.doc"
    appWD.ActiveDocument.SaveAs Filename:=CheminComplet

Discussions similaires

  1. [XL-2003] Effacer des signets dans un document word depuis excel
    Par scoubi77 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/03/2010, 21h20
  2. [AC-2000] imprimer un document word depuis access
    Par Sefrou dans le forum VBA Access
    Réponses: 0
    Dernier message: 15/11/2009, 15h34
  3. Lancer et imprimer un mailing Word depuis Excel
    Par jncoffy dans le forum VBA Word
    Réponses: 1
    Dernier message: 10/09/2009, 18h24
  4. Imprimer un Mailing Word depuis Excel
    Par jncoffy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/09/2009, 15h03
  5. Comment Imprimer un document Word depuis Delphi ?
    Par jwff_22 dans le forum Delphi
    Réponses: 1
    Dernier message: 28/03/2007, 20h24

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