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 :

Affichage doc Word depuis macro Excel [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 38
    Par défaut Affichage doc Word depuis macro Excel
    Bonjour je suis nouveau (voila ça c'est dit)

    Contexte :

    Je suis en train de travailler un fichier excel pour en faire un genre de formulaire dont le but est d'aider à classifier un produit selon sa nature, son usage, etc... il s'agit de contrôles à l'exportations (4 grands groupes).

    Une fois la classification établie, un bouton ouvre un fichier Word dans lequel se trouve 4 paragraphes (1 par groupe) à copier coller sur les documents classifiés. Il y a 1 paragraphe par page, et donc selon le groupe choisis, j'ouvre à la page correspondante (1 à 4)

    Extrait du code: (j'ai référencé la bibliotèque Word et déclaré les variables en dehors de la procédure)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub DisplayMarking(thisPage As Integer)
     
        Set wordApp = New Word.Application
        wordApp.Visible = True
     
        Set wordDoc = wordApp.Documents.Open _
        (ActiveWorkbook.Path & "\documentWord.docx", False, True)
     
        wordApp.Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=thisPage
     
    End Sub
    Problèmes :

    1. ça ouvre un nouveau document chaque fois que je clique, est-il possible, si il est déjà ouvert, de ne pas en ouvrir un nouveau mais juste de se repositionner à la bonne page?

    2. Si oui, alors il faut que je trouve comment mettre ensuite Word au premier plan.
      [résolu] "wordApp.Activate"

    3. Paufinage : lorsqu'on change de page sous word (tout en bas à gauche)ça ajuste correctement l'affichage (haut de la page pile poil sous le ruban. J'ai récupéré la macro avec l'enregistreur mais rien n'y fait.. la macro n'ajuste pas l'affichage (on voit un bout de la page d'avant c'est môche) ..je sais je suis un gros maniac bref connaissez vous le subterfuge ?


    Merci de m'avoir lu.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je ne suis pas calé en VBA Word pour le point 3. Pour les autres essaie (non testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        If WordApp = "" Then Set WordApp = New Word.Application
        WordApp.Visible = True
        If WordDoc = "" Then
            Set WordDoc = WordApp.Documents.Open _
            (ActiveWorkbook.Path & "\documentWord.docx", False, True)
        ElseIf WordDoc.Name <> "documentWord.docx" Then
            Set WordDoc = WordApp.Documents.Open _
            (ActiveWorkbook.Path & "\documentWord.docx", False, True)
        End If
        WordApp.Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=thisPage
        Application.ActivateMicrosoftApp xlMicrosoftWord

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 38
    Par défaut
    Merci bien, alors je viens de tester et j'ai des erreurs :

    Si le document Word n'est pas encore ouvert
    erreur '91' : "variable objet ou variable de bloc with non définie" sur [If wordApp = ""]

    Si le document est ouvert
    Pas d'erreur et ça fonctionne correctement : pas de nouvelle ouverture de fichier, selection de la bonne page..

    Si le document a été ouvert puis fermé
    erreur '462' : "le serveur distant n'existe pas ou n'est pas disponible" ça me met la même erreur sur la comparaison de wordDoc si j'enlève [If wordApp = ""]

    Enfait quand je ferme le classeur word je ne sais pas ce que devienne les objets wordApp et wordDoc.. c'est surtout ça qui m'endicape
    J'ai essayé de faire des tests avec Is Nothing (mais je connais pas trop), pareil ça merdouille.


    Ensuite pour Application.ActivateMicrosoftApp xlMicrosoftWord : ça n'a pas le résultat escompté : ça ouvre une nouvelle application word.

    J'ai étudié un peu la syntaxe et j'ai trouvé un truc qui fonctionne : wordApp.Activate (tout simplement ) donc point 2 résolu.




    [EDITION]
    Y a du nouveau! j'ai reussi à faire fonctionner le "Is Nothing"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        If wordApp Is Nothing Then Set wordApp = New Word.Application
     
        With wordApp
            .Visible = True
     
            If wordDoc Is Nothing Then
                Set wordDoc = .Documents.Open _
                (ActiveWorkbook.Path & "\Textes marquages Exp Ctrl.docx", False, True)
            End If
     
            .Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=thisPage
            .Activate
        End With
    Avec ça maintenant ça fonctionne à l'ouverture du word (plus d'erreur '91')
    Par contre j'ai toujours l'erreur lorsque le word est fermé puis qu'il faut le réouvrir.. c'est bizarre dans le débugage la variable n'affiche rien du tout, comme si elle n'existait plus.

    Sinon je n'ai pas compris pourquoi tester le nom du document, il n'y a qu'un seul cas possible. ?

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai modifié et apparemment, je n'ai plus d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test1()
        Dim WordApp As Object, WordDoc As Object
        If WordApp Is Nothing Then Set WordApp = New Word.Application
        WordApp.Visible = True
        If WordDoc Is Nothing Then
            Set WordDoc = WordApp.Documents.Open _
            (ActiveWorkbook.Path & "\doctest.docx", False, True)
        ElseIf WordDoc.Name <> "doctest.docx" Then
            Set WordDoc = WordApp.Documents.Open _
            (ActiveWorkbook.Path & "\documentWord.docx", False, True)
        End If
        WordApp.Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=thisPage
        Set WordDoc = Nothing
    End Sub
    Important, quand tu fermes le document il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        WordDoc.Close
        Set WordDoc = Nothing

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 38
    Par défaut
    Je n'ai toujours pas compris le but du "elseif", dans quel cas on l'utilise ?

    Pour "Set WordDoc = Nothing" à la fin, ça pose problème : si l'utilisateur ne ferme pas le fichier ça en r'ouvre un nouveau.

    Comme tu l'indiques : il faut mettre la variable à nothing quand on ferme le document, mais le document sera toujours fermé par l'utilisateur (petite croix) et jamais par la macro. Alors comment fait-on ? comment je sais que l'utilisateur viens de fermer le document ?

    Personne n'a d'idée pour le point 3 ?

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Pour "Set WordDoc = Nothing" à la fin, ça pose problème : si l'utilisateur ne ferme pas le fichier ça en r'ouvre un nouveau.
    Teste ce code qui semble fonctionner (modifie le nom de fichier) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test1()
        If WordApp Is Nothing Then Set WordApp = New Word.Application
        WordApp.Visible = True
        On Error Resume Next
        WordDoc.Activate
        If Err.Number <> 0 Then
            Err.Clear
            Set WordDoc = WordApp.Documents.Open _
            (ActiveWorkbook.Path & "\doctest.docx", False, True)
        End If
        On Error GoTo 0
        Set Var = WordDoc
        WordApp.Selection.Goto What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=thisPage
    End Sub

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

Discussions similaires

  1. [XL-2007] Récupération de CustomDocumentProperties Word depuis macro Excel
    Par Apo_fr dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 03/07/2014, 14h45
  2. Inserer des numeros pages dans un doc Word depuis Excel en VBA
    Par bguichardaz dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/01/2010, 17h45
  3. Démarrer macro Word depuis macro Excel
    Par nashiboy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/12/2009, 20h02
  4. Imprimer doc word depuis excel
    Par Basicnav dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/11/2009, 07h43
  5. Comment ouvrir word depuis macro excel ?
    Par megapacman dans le forum VBA Word
    Réponses: 4
    Dernier message: 15/11/2006, 15h59

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