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 :

Problème GetObject pour Automation Word Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 69
    Par défaut Problème GetObject pour Automation Word Excel
    Bonsoir (nuit ?) A tous.
    Des heures que je cherche quelque chose que je pensais tout simple.
    J'explique :
    J'ai une liste dans Excel et un document Word (qui ne sera pas toujours le même)
    L'idée : Ajouter un signet au document Word ouvert (appelé texte) et lancer une macro dans Excel, ce programme va balayer la liste Excel, et pour chaque ligne dans Excel , il va copier le doc word actif dans un nouveau document Word (pour ne pas modifier l'original et parce que je ne sais pas supprimer un texte entré précédemment), Copié la ligne Excel à l'endroit du signet, imprimer le document puis le fermer. Retourner à l'original Word, si ligne suivante d'Excel y a une ligne à imprimer on recommence la procédure.

    Pour faire ceci je dois donc utiliser le document Word alors que je ne connais pas forcément son chemin.
    Jai donc pensé à "GETOBJECT"
    Ben vous me croirez ou non, ça ne fonctionne pas (pas comme je l'entends du moins)

    Ci dessous le code (qui n'est pas fini bien sur)
    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
    Private Sub CommandButton_OK_Click()
        Dim WordDoc As Word.Document
        Dim WordDoc2 As Word.Document
        Dim WordApp As Word.Application
        Dim Texte As String
        Dim NomWord As String, NomWord2 As String
        Dim NomExcel As String
     
        NomExcel = Me.TextBox_Nom_Excel
        NomWord = Me.TextBox_Nom_Word
        Windows(NomExcel).Activate
        Texte = Range("a1")
     
        Set WordApp = CreateObject("Word.Application")
        'Set WordDoc = GetObject(NomWord)
        Set WordDoc = GetObject("D:\Nos documents\AutoEntrepriseVincent\ProgOnline\Guillaumme Roux\PubliWord\Test.docx")
     
        WordDoc.Range.Select
        WordDoc.Content.Copy
     
        WordApp.Documents.Add.Activate
        WordApp.Visible = True
        NomWord2 = WordApp.ActiveDocument.Name
        Set WordDoc2 = GetObject(NomWord2)
     
     
        WordApp.Selection.Paste
     
     
        WordDoc2.Bookmarks("texte").Range.Text = Texte
     
     
     
     
    End Sub
    La il fonctionne , ce qui me chagrine c'est que je suis obligé de rentrer le chemin dans le premier Getobject alors que pas du tout pour le second, le nom du fichier suffit.
    Mais pourquoi ?
    J'ai du faire une erreur bête car on ne parle pas de ce problème sur le net, et j'ai cherché. La syntaxe que je trouve dans les forums est celle que j'utilise. Pourtant il est indiqué que le chemin n'est pas obligatoire. Ou me goure je ?

    Si quelqu'un à une idée, ce "petit" problème m'a vanné.

    En tout cas merci à tous. ceux qui auront eu le courage d'aller jusqu'au bout de ce message

    Good night and good luck.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 292
    Par défaut
    Je pense que tu peux éviter le second GetObject :

    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        WordApp.Documents.Add.Activate
        NomWord2 = WordApp.ActiveDocument.Name
        Set WordDoc2 = GetObject(NomWord2)
    Tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Set WordDoc2 = WordApp.Documents.Add
        WordDoc2.Activate

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 69
    Par défaut
    Merci,
    je vais le faire car ça va m'alléger le code (et c'est toujours bien)
    mais je vais être lourd (si si), mais ce que j'aimerais c'est manipuler les fenêtres sans avoir à entrer le chemin (pour le 1er GetObject), je trouve que c'est une lourdeur pour l'usager. Ou alors, de récupérer automatiquement le chemin de la dite fenêtre, mais on tourne en rond, puisque je ne peux la sélectionner sans en connaître le chemin, ahlala.
    Tiens c'est dimanche, je vais faire une prière.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/11/2010, 23h23
  2. [Toutes versions] Problème avec macro Excel pour ouvrir Word
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/03/2010, 16h25
  3. openFileDialog pour ouvrir word, excel ,etc
    Par sboffin dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 23/07/2009, 18h37
  4. Erreur automation sous excel pour ouvrir Word
    Par Philippe53 dans le forum VBA Word
    Réponses: 6
    Dernier message: 21/06/2008, 22h52
  5. Problème de liaison entre Word/excel et MOSS
    Par Faro dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/01/2008, 18h19

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