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 :

SOMMAIRE WORD PILOTER EN VBA EXCEL


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut SOMMAIRE WORD PILOTER EN VBA EXCEL
    Bonjour à toutes et à tous,

    Je vous fais qu'un brève présentation (je suis au travail...)
    Je suis électricien, je travail dans les ascenseurs...et je fais de la prog pour mon travail...

    Je ne suis pas expert en vba, loin de là, mais j'arrive en général à ce que je veux (il y a toujours quelqu'un qui a eu le même besoin que moi). Ca c'est particulièrement vrai pour le VBA excel... en Revanche pour piloter word en vba excel, les sujets se font rare...

    Je post évidemment après avoir fait de nombreuse recherche sur google et sur le forum, l'aide de office... rien de concret. Et je cherche presque une solution clé en main.

    Je voudrais juste insérer un sommaire automatique sur word, depuis mon VBA excel... Et je pêche grave.

    je joints juste mes déclaration de variable, le contenu de la macro est beaucoup trop long :

    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
    Sub EcriDansWord()
    Dim WordObj As Object
    On Error Resume Next
    Set WordObj = CreateObject("Word.Application")
    'Pour afficher Word
    WordObj.Visible = True
    'Ajoute un document
    WordObj.Documents.Add
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim oTbl As Table
    Dim txtBx As Shape
    Dim classeur As String
    Dim class As String
    Dim heure As Variant
    Set WordDoc = WordObj.ActiveDocument
    Je vous remercie d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le sommaire n'est pas obtenu avec du VBA même en Word.
    C'est juste un champ TOC (Table Of Content) qui va remprendre les entrées pour ce sommaire et en faire un sommaire.

    Et
    Et je cherche presque une solution clé en main.
    C'est pas le but de ce forum, c'est un forum d'entraide.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Et je cherche presque une solution clé en main.
    <<< j'aurais au moins essayé...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With WordObj
            .ActiveDocument.TablesOfContents.Add Range:=Selection.Range
    End With
    J'ai essayé ce code, qui (sans le WordObj) m'insère mon champs quand je le lance depuis le VBA de word... mais pas depuis excel...

    C'est surtout ça que je comprends pas, en général de mettre ma variable objet ou document devant un code issus de l'enregistreur de macro word ça fonctionnait très bien...


    J'ai essayé avec mes 3 variables WordApp, WordObj, et WordDoc
    pour mémoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim WordObj As Object
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Si tu ne maitrises pas le langage, il faut éviter les approximations où tu laisses le logiciel choisr à ta place parce que tu lui permet.
    Tu dois déclarer et affecter chaque objet et ensuite travailler avec les propriétés et méthodes de chaque objet.


    tu dois éviter le LateBinding et passer par le EarlyBinding.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub EcriDansWord()
    Dim WordObj As Object
    On Error Resume Next
    Set WordObj = CreateObject("Word.Application")
    'Pour afficher Word
    WordObj.Visible = True
    'Ajoute un document
    WordObj.Documents.Add
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Set WordDoc = WordObj.ActiveDocument
    Ce code est un peu fouillis, essaie ligne par ligne de suivre ce que tu fais.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Oui je reconnais que c'est "fouillis", c'est l’inconvénient de faire copier coller des solutions qu'on recherche sur les forums quand on est bloqué.

    Merci pour l'info du "early" et du "late"... mais j'avoue je ne sais pas comment l'adapter à mon affaire...

    il faut éviter les approximations où tu laisses le logiciel choisr à ta place parce que tu lui permet.
    Peux tu m'en dire plus s'il te plait?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Là :

    Pourquoi ne pas affecter directement à ta variable document ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set WordDoc = WordObj.Documents.Add
    Aussi, pourquoi ne pas utiliser un modèle ?
    Il pourrait au départ contenir ta table des matières.

    Late vs Eary : http://mhubiche.developpez.com/vba/f...endre/binding/


    Un autre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim WordObj As Object
    ...
    ...
    Dim WordApp As Word.Application
    Deux objets pour une même application.

    Qui va être utile ou utilisé ?
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Oui pour la variable WordApp c'était juste pour essayer si ça changeait quelque chose, en effet elle me sert pas.

    Je ne peux pas utilisé de modèle, parce que beaucoup de monde vont utilisé, et si il se le font passer sans le modèle ça va planter...

    Mais as tu une idee de pourquoi ce code ne marche pas?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With WordObj
            .ActiveDocument.TablesOfContents.Add Range:=Selection.Range
    End With

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Premier problème dans ton code :
    Cette ligne masque toutes les erreurs d'exécution.
    En fait, si quelque chose ne fonctionne pas, tu ne sais pas savoir quoi.

    Enlève cette ligne et lance ton code, tu auras un message d'erreur qui devrait donner une indication.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je reprends le sujet un peu tard, désolé.

    j'ai réussis à solutionné mon problème, j'avais pas pensé à enlever "on error..." pour débugger mon code.

    mon problème venait de l'argument de ma fonction (j'espère être juste en employant ces termes, j'ai un peu tendance à tout confondre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Set myRange = WordObj.ActiveDocument.Range(Start:=882, End:=882)
    WordObj.ActiveDocument.TablesOfContents.Add Range:=myRange ', _
    ' UseFields:=False, _
    ' UseHeadingStyles:=True, _
    ' LowerHeadingLevel:=1, _
    ' UpperHeadingLevel:=1, _
    ' AddedStyles:="myStyle, yourStyle"
    Voilà le code qui fonctionne (la partie commenter étant les arguments facultatif).

    en résumé, j'ai dû mettre dans une variable mon range (c'est dis très maladroitement désolé) car le Range directement après le "Add" bug (nombre d'argument trop important)

    En définitif, merci pour ton aide Heureu oli.

    A très bientôt

Discussions similaires

  1. [XL-2013] Ouvrir un fichier word depuis un VBA excel en chemin relatif
    Par YannOss dans le forum Excel
    Réponses: 2
    Dernier message: 11/04/2014, 08h50
  2. [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
  3. [XL-2003] Comment créer un tableau sous Word à partir de VBA Excel
    Par datacell33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2011, 10h01
  4. Réponses: 2
    Dernier message: 07/09/2010, 12h39
  5. [XL-2003] Fermeture de Processus Word via Macro VBA Excel
    Par ted the Ors dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2009, 19h46

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