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 Project Discussion :

D'Excel vers Word via VBA


Sujet :

VBA Project

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut D'Excel vers Word via VBA
    Bonjour,

    Je cherchais en vain à importer les données d'Excel vers Word. J'ai toujours la même erreur : "Le composant activex ne peut pas créer un objet"

    Voici mon 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
    Sub EnvoyerDonneesExcelVersWord()
     
         Dim DocWord As Word.Document
     
         Dim AppWord As Word.Application
     
         Set AppWord = New Word.Application
     
         Application.DisplayAlerts = True
     
         AppWord.ShowMe
     
         AppWord.Visible = True
     
         'Ouvre le document Word
     
         Set DocWord = AppWord.Documents.Open("/Users/Juunii/Desktop/projet/salaire.doc", ReadOnly:=False)
     
         ' Copie les données Excel
     
         ThisWorkbook.Worksheets("tableau des salaires").Range("A1:G16").Copy
     
         ' Colle les données dans Word
     
         DocWord.Range.PasteSpecial
     
         Application.CutCopyMode = False
     
         DocWord.Application.ActiveDocument.Save
     
         AppWord.Application.Quit
     
    End Sub
    Set AppWord = New Word.Application : C'est là que ça "bogue". Merci de votre aide.

    Juunii

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Juunii Voir le message
    Bonjour,
    Je cherchais en vain à importer les données d'Excel vers Word.
    Ce serait supposé de fonctionné.

    essaie de déclarer tes variables as Object
    et il faut bien évidement la référence Microsoft Word

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         Dim DocWord As Object 
         Dim AppWord As Object

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Merci.

    En fait c'est à partir de là : http://ericrenaud.free.fr/droitedde.htm , mais ça ne fonctionne pas chez moi. J'ai vérifié les cases cochées dans Références et ça marche toujours pas.

    Est-ce que je dois passer par Excel et que je ferme Word avant d'activer la macro ?

    Merci beaucoup

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Juunii Voir le message
    Est-ce que je dois passer par Excel et que je ferme Word avant d'activer la macro ?
    Quoi???
    Ton code appelle Word ... C'est certain que ta macro doit être dans Excel et Word fermé.
    la référence Microsoft Word doit être coché dans Excel.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Un message d'erreur s'affiche : "Le composant ActiveX ne peut pas créer l'objet".

    C'est peut-être Set AppWord = New Word.Application

    Est-ce que tu as essayé toi-même ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Nom : ref.png
Affichages : 1019
Taille : 62,3 Ko

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Citation Envoyé par Juunii Voir le message
    Un message d'erreur s'affiche : "Le composant ActiveX ne peut pas créer l'objet".

    C'est peut-être Set AppWord = New Word.Application

    Est-ce que tu as essayé toi-même ?
    bien sur, j'utilise toujours ce type de connexion quand j'échange des données excel vers word et vis versa

    et toi as-tu essayé de déclaré tes variables as Object
    comme je t'ai proposé au message 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Dim DocWord As Object 
         Dim AppWord As Object

  8. #8
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    essaie ceci

    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
    Dim AppWord As Word.Application
    Dim DocWord As Word.Document
    Set AppWord = CreateObject("Word.Application")
     
    Set DocWord = AppWord.Documents.Add
     
    Application.DisplayAlerts = True
     
         AppWord.ShowMe
     
         AppWord.Visible = True
     
         'Ouvre le document Word
     
         Set DocWord = AppWord.Documents.Open("/Users/Juunii/Desktop/projet/salaire.doc", ReadOnly:=False)
     
         ' Copie les données Excel
     
         ThisWorkbook.Worksheets("tableau des salaires").Range("A1:G16").Copy
     
         ' Colle les données dans Word
     
         DocWord.Range.PasteSpecial
     
         Application.CutCopyMode = False
     
         DocWord.Application.ActiveDocument.Save
     
         AppWord.Application.Quit

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Ok, merci

    Je le mets dans une module de Projet ? Ou dans Feuill ? Car ça marche pas... Je vais essayer avec un autre fichier Excel

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Nom : coode.png
Affichages : 988
Taille : 60,4 Ko Nom : déb.png
Affichages : 875
Taille : 25,3 Ko
    Images attachées Images attachées  

  11. #11
    Membre éprouvé
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Points : 1 116
    Points
    1 116
    Par défaut
    Je remarque que tu n'a toujours pas essayé de mettre tes variables as Object
    essaie ça avant d'aller plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Dim DocWord As Object 
         Dim AppWord As Object
    si ça ne fonctionne toujours pas voir
    https://support.microsoft.com/fr-fr/kb/244264/fr

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Moi, j'ai ouvert mon aide et j'ai cherché showme et j'ai trouvé cela:


    Référence du développeur Word
    Application.ShowMe, méthode
    Affiche le Compagnon Office ou la fenêtre Aide lorsque des informations complémentaires sont disponibles.
    Syntaxe

    expression.ShowMe

    expression Variable qui représente un objet Application.

    Remarques


    Dans le cas contraire, cette méthode génère un message indiquant qu'aucune rubrique d'aide n'est associée.


    Exemple


    Cet exemple montre comment exécuter une démonstration de l'Assistant Conseil, si elle est disponible.

    Visual Basic pour Applications
    Application.ShowMe
    Or, cela fait une mèche que Microsoft a zappé le compagnon Office

    Commence par condamner cette ligne:

    On ne le dira jamais assez souvent : Regarder dans l'aide cela ne donne pas la peste.

    Dans VBA : un clic sur un mot-clef et un coup de doigt sur , cela fait des miracles.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par gnain Voir le message
    Je remarque que tu n'a toujours pas essayé de mettre tes variables as Object
    essaie ça avant d'aller plus loin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Dim DocWord As Object 
         Dim AppWord As Object
    si ça ne fonctionne toujours pas voir
    https://support.microsoft.com/fr-fr/kb/244264/fr
    J'ai essayé avec ce que tu as indiqué mais ça a pas marché non plus. Suis-je blond ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Avec un code légèrement modifié :

    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
     
     
    Sub PilotageWord()
         Dim MonBeauWord As Object
         Set MonBeauWord = CreateObject("Word.Application")
         ' Création d'un nouveau document :
         Documents.Add
       ' Ecriture dans ce nouveau document :
        'Selection.TypeText "Test de fonctionnement"
         Dim AppWord As Word.Application
         Set AppWord = New Word.Application
         Application.DisplayAlerts = True
         AppWord.ShowMe
         AppWord.Visible = True
         ' Copie les données Excel
         ThisWorkbook.Worksheets("tableau des salaires").Range("A1:B6").Copy
         ' Colle les données dans Word
         MonBeauWord.Range.PasteSpecial
         Application.CutCopyMode = False
         'MonBeauWord .Application.ActiveDocument.Save
         'AppWord.Application.Quit
          ' Sauvegarde de ce document ainsi créé :
          ActiveDocument.SaveAs "Simple test.doc"
         ' Fermeture de ce document :
          ActiveDocument.Close
          Set MonBeauWord = Nothing
    End Sub

  15. #15
    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
    Salut, déjà ne mélange pas tout : Early ou Late Binding ensuite dans la FAQ

  16. #16
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2014
    Messages : 33
    Points : 16
    Points
    16
    Par défaut
    Bonjour Kiki29. Merci mais désolé je ne vois pas en quoi ça apporte ??

  17. #17
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    J'ai fait le ménage dans tes objets, je me suis assuré que Word créait vraiment un nouveau document et que toutes les opérations à faire dans Word étaient préfacées avec appword. Parce que, quand on pilote une autre application pas automation, il faut que VBA soit explicitement prévenu de tout ce qu'il doit faire dans l'autre application, sinon il essaie automatiquement de l'appliquer à l'application-hôte.

    Tu dois ajouter la référence à Word dans VBA Excel.


    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
    Sub PilotageWord()
    'ajouter la référence à
    'Microsoft Word Object Library
    'Ne pas se plaindre si cela n'a pas
    'été fait
    'En enlevant MonBeauWord et en gardant
    'Seulement appword et en s'organisant pour
    'que Word crée vraiment un nouveau
    'document, et en préfaçant tous les objets Word
    'avec appword,cela finit par marcher
       ' Ecriture dans ce nouveau document :
        'Selection.TypeText "Test de fonctionnement"
         Dim AppWord As Word.Application
         Set AppWord = New Word.Application
         Application.DisplayAlerts = True
         AppWord.ShowMe
         AppWord.Visible = True
         AppWord.Documents.Add
         ' Copie les données Excel
         ThisWorkbook.Worksheets("tableau des salaires").Range("A1:B6").Copy
         ' Colle les données dans Word
         AppWord.Selection.PasteSpecial
         Application.CutCopyMode = False
               ' Sauvegarde de ce document ainsi créé :
          AppWord.ActiveDocument.SaveAs "Simple test.doc"
         ' Fermeture de ce document :
          AppWord.ActiveDocument.Close
          AppWord.Quit
    End Sub
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  18. #18
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par Juunii Voir le message
    Bonjour Kiki29. Merci mais désolé je ne vois pas en quoi ça apporte ??
    Lis bien ma réponse avec le code modifé.

    Early BInding = new Word.application
    Late Binding = CreateObject("word.application")
    Un seul object Word.application au lieu de deux...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. [WD-2003] Formater export Excel vers Word via signet
    Par polemos dans le forum VBA Word
    Réponses: 6
    Dernier message: 24/11/2011, 15h33
  2. [XL-2007] transfert données excel vers word via plusieurs macro!
    Par yannick63430 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/12/2010, 22h41
  3. Insérer un Tableau excel dans Word via VBA depuis Excel
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/05/2008, 09h52
  4. [VBA-A]Copier des données d'Excel vers Word
    Par soad029 dans le forum VBA Word
    Réponses: 15
    Dernier message: 16/03/2006, 12h56
  5. [VBA-E]Copie graphique de excel vers word
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/02/2006, 11h49

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