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 :

OUvrir un document word depuis excel


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut OUvrir un document word depuis excel
    Bonjour mon problème est le suivant : j'aimerai ouvrir un docx avec une macro sous excel en utilisant une fenêtre OUVRIR... et ensuite le remplir grâce aux signets. Voici mon code ci-dessous

    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
    Sub export_données_dans_signet_word()
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim FichierDroitsAdmin As String
     
    Set WordApp = CreateObject("word.application") 'ouvre session word et le fichier voulu
    FichierDroitsAdmin = Application.FileDialog(moFileDialogOpen)
     
    Set WordDoc = WordApp.Documents.Open(FichierDroitsAdmin) '"C:/Demande_droits_admin.docx")    'ouvre document Word
     
    WordApp.Visible = False 'word masqué pendant l'operation
     
    'dans le document word, il faut avoir placé des signets aux endroits qu'on veut remplir
    'à l'endroit de chaque signet qui se trouve dans le fichier word on va inscrire le contenu des cellules
    WordDoc.Bookmarks(Name).Range.Text = nomConsultant
    WordDoc.Bookmarks(sigle).Range.Text = sigle
    WordApp.Visible = True 'affiche le document Word
    'WordDoc.PrintOut 'si on veut imprimer
    chemin = ThisDocument.Path & "\" & "DemandeDroits_Admin_" & nomConsultant
     
    ActiveDocument.SaveAs chemin
    MsgBox "La demande a été enregistrée " & chemin
     
    WordDoc.Close True 'si on veut fermer le document word en sauvegardant les données
    'WordApp.Quit 'ferme la session Word
    End Sub
    * Merci *

  2. #2
    Membre à l'essai
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Est ce que tu pourrais détailler svp les problèmes ou difficultés que tu rencontres.

    Car juste avec ton code, j'ai un peu du mal a voir ce que tu chercher vraiment a faire.

    Merci par avance

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Sakut, à lire

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Mon code ci-dessus, a pour but d'ouvrir une fenêtre pour choisir mon document word, de le modifier à l'aide de Bookmarks et de l'enregistrer avec un nouveau nom,

    Le problème c'est que je n'arrive pas à l'ouvrir, il doit y avoir un problème dans la variable du nom du fichier

  5. #5
    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,

    Avec ton explication, c'est un peu plus clair.


    Tu déclares un String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim FichierDroitsAdmin As String
    Mais tu lui attribues un objet FileDialog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FichierDroitsAdmin = Application.FileDialog(moFileDialogOpen)
    Pour faire cette opération, il faut déclarer un objet FileDialog et récupérer son contenu une fois qu'il a été utilisé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim oDlg As FileDialog
     
    Set oDlg = Application.FileDialog(msoFileDialogOpen)
     
    With oDlg
        .InitialFileName = "C:\temp\"
        .Show
    End With
     
    Debug.Print oDlg.SelectedItems(1)
    si tu veux un string pour ouvrir ton document, il faut lui attribuer la valeur obtenue par la propriété SelectedItems().

    Mais ce n'est pas nécessaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wApp.Documents.Add oDlg.SelectedItems(1)

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    et quelle serait l'orthographe pour modifier les bookmarks ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'DocWord.Bookmarks("Name").Range.Text = "100"
    oDlg.Bookmarks("Name").Range.Text = "100"
    Je n'arrive pas à les modifier ....

  7. #7
    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'objet oDlg ne sert que pour ouvrir le fichier, il n'est en rien utilisé pour travailler le contenu du document !

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Donc je fais comment pour ouvrir le doc et le modifier ?

  9. #9
    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 code que tu nous donnes n'est pas le tien ?

  10. #10
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Je me suis servit du message de Heureux-oli pour compléter mon code qui a beaucoup plus de fonctionalité que cela, mais étant débutante en Macro Word .... je ne comprenais pas comment ouvrir un word à partir d'excel et le modif à l'aide des signets ....

    Personne n'a la solution ? je répète je cherche à ouvrir un word via une macro excel (fenêtre ouvrir), le modifier avec des signets et l'enregistrer ....

  11. #11
    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,

    Tu as tous les éléments pour concevoir ton code.

    Dans l'ordre

    Les déclarations
    - Application
    - Document
    - Boîte de dialogue
    Les affectations
    - l'application
    - le document
    - la boîte de dialogue
    Le traitement sur ton document

  12. #12
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    ? c'est toi même qui m'a dit "
    L'objet oDlg ne sert que pour ouvrir le fichier, il n'est en rien utilisé pour travailler le contenu du document !
    Si je peux pas le modifier comment puis je rajouter des données ?

    Ensuite mes bookmarks ne fonctionnent pas je pense que j'utilise la mauvaise orthographe et personne ne m'a répondu a ce sujet.

  13. #13
    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,


    Au départ, tu disposes de trois objets.

    Le premier est l'objet application (Word)
    Le second est l'objet FileDialog qui va te servir en récupérant une de ses propriétés à ajouter un objet Document à ton application.
    Une fois le document ajouté à la collection des documents de l'application il ne sert plus à rien.

    Donc, dans l'ordre,

    On initialise l'objet Application.
    On utilise l'objet FileDialog pour avoir le chemin d'un document et l'ouvrir.
    On ouvre le document avec le résultat de l'objet FileDialog.

    Ensuite, on travaille sur l'objet Document pour manipuler son contenu.

    Donc, oui,

    L'objet oDlg ne sert que pour ouvrir le fichier, il n'est en rien utilisé pour travailler le contenu du document !
    reste vrai.

  14. #14
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci, pour l'intéret que tu as à mon problème mais ta réponse est surement très clair pour un initié, mais tu m'as un peu perdue :j'ai essayé de comprendre mais voila ce que ça donne je suis pas loin mais ça ne marche toujours pas :

    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
     
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte
    Dim oDlg As FileDialog
     
    Set oDlg = Application.FileDialog(msoFileDialogOpen)
     
    With oDlg
        .InitialFileName = "C:\temp\"
        .Show
    End With
     
    Debug.Print oDlg.SelectedItems(1)
        Set WordApp = CreateObject("word.application")    'ouvre une session Word
        Set WordDoc = oDlg
        WordApp.Visible = False    'Word est masqué pendant l'opération
    WordDoc.Bookmarks("Nom").Range.Text = Cells(A, 1)   
     
    chemin = ThisWorkbook.Path & "\" & "DemandeAcces_" & nomConsultant
    ActiveDocument.SaveAs chemin
     
        'WordApp.Quit 'ferme la session Word

  15. #15
    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,

    C'est pas pour un initié.

    Il faut commencer par comprendre ce que l'on veut avoir et pas à pas essayer d'avance.

    Tu reprends ton doce qui ne fonctionne pas et tu greffe des morceaux que j'ai mis dans le fil de discussion.

    Simplement, dans l'affectation de tes objets tu fais ceci :

    Tu affectes à un aobjet un autre objet ?

    Un document est ouvert en l'ajoutant à la collection des documents qui peut le cas échéant être vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set WordDoc = WordApp.Documents.Open ("monchemin")

  16. #16
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 15
    Points
    15
    Par défaut
    Merci encore pour tes réponses mais je suis toujours aussi larguée, ... entre objet et document. J'ai mis des commentaires ou je ne comprennais pas

    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
    Sub Word()
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim i As Byte
    Dim oDlg As FileDialog
    Dim monchemin As String
     'on ouvre la boîte de dialogue
    Set oDlg = Application.FileDialog(msoFileDialogOpen)
     ' que fait oDlg ici ?
    With oDlg
        .InitialFileName = "C:\temp\"
        .Show
    'Excel ne reconnait pas.Bookmarks pourtant ma librairie est bien active
    oDlg.Bookmarks("Nom").Range.Text = nomConsultant
     
    chemin = ThisWorkbook.Path & "\" & "DemandeAcces_" & nomConsultant
    ActiveDocument.SaveAs chemin
    End With

  17. #17
    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,

    En général, un objet est autre chose qu'une variable "simple".

    Une chaîne, un entier, un double, un booleen, une date sont des données simples.

    Un tableau constitué de ces données simples reste une donnée simple.

    Par contre, un objet est une donnée "complexe".

    Une application est un objet, c'est le cas de Word. Cet objet peut contenir un ou plusieurs objets, dans le cas de Word, il peut contenir des documents. On parle alors de collection. Word possède une collection de document.
    Pour modifier la collection, on peut soit ajouter un document au départ d'un modèle, dans ce cas, on utilise la méthode Add

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonObjetDocument = Word.Documents.Add ("MonModèle")
    On a alors une objet document sur lequel on peut travailler.
    Cet objet document possède lui aussi des objets comme les paragraphes.
    Ces paragraphes font partie d'une collection paragraphes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonObjetDocument.Paragraphs.Add
    Un document peut contenir des tableaux, des signets, des styles, des mots, des images, ...

    On peut utiliser une sorte d'arbre pour visualiser les différents objets.

    Par contre, deux objets différents ne peuvent être utilisés l'un pour l'autre.

    Un objet document Word ne peut pas être utilisé à la place d'un classeur Excel. De même qu'un objet FileDialog ne peut pas être utilisé à la place d'un document.

    Chaque objet a sa place.

Discussions similaires

  1. Mise en page d'un document word depuis excel VBA
    Par tinange dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2012, 12h42
  2. [XL-2003] Ouvrir document word depuis excel avec boite de dialogue
    Par gtkill dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/08/2011, 17h50
  3. [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
  4. Imprimer un document word depuis Excel
    Par vash641 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 27/05/2009, 09h53
  5. Ouvrir un document word ou excel en php
    Par Taz_8626 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/03/2006, 17h40

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