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 :

Souci lancement Word depuis Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut Souci lancement Word depuis Excel
    Bonjour à tous et à toutes

    Je cherche à ouvrir un fichier word depuis excel, avec un code qui fonctionne pourtant bien dans d'autres applis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub CommandButton1_Click()
    Dim Dossier, NomFich As String
    Dossier = Workbooks("Plaquette.xls").Worksheets("Plaquette").Range("B4").Value
    NomFich = Workbooks("Plaquette.xls").Worksheets("Plaquette").Range("B5").Value
     
    Const wdStory = 6
    Const wdMove = 0
    Set Objword = CreateObject("Word.Application")
     
    Objword.Visible = True
    Set objdoc = Objword.Documents.Open("e:\Etat réserves non levées.doc")
     
    End Sub



    Au final, quand je lance le code, j'ai un message d'erreur "Erreur de compilation - variable non définie" pour "Objword"
    J'ai pourtant bien coché sur "Microsoft Word 12.0...." dans Outils/Références

    Je ne comprends pas ....

    Merci de votre aide

    Daniel S.

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    tu es sans doute et c'est bien en option explicite.
    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
    Sub CommandButton1_Click()
    Dim Dossier, NomFich As String
    Dossier = Workbooks("Plaquette.xls").Worksheets("Plaquette").Range("B4").Value
    NomFich = Workbooks("Plaquette.xls").Worksheets("Plaquette").Range("B5").Value
     
    Const wdStory = 6
    Const wdMove = 0
     
    Dim  Objword
    Set Objword = CreateObject("Word.Application")
     
    Objword.Visible = True
    Set objdoc = Objword.Documents.Open("e:\Etat réserves non levées.doc")
     
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Salut familledacp,

    Pour moi Set WordApp = CreateObject("Word.Application") sont des Dim WordApp As Word.Application.

    Et les Set WordDoc = WordApp.Documents.Open(WordChem) sont des Dim WordDoc As Word.Document.

    As-tu essayé de déclarer ton "objdoc" ?

    Je te propose d'étudier ça.

    Cordialement,
    Kimy

    EDIT : C'est ce à que je pensais rdurupt !

  4. #4
    Invité
    Invité(e)
    Par défaut
    non en Variant c'est mieux ça te permets d'utiliser la bonne version suivant les PC et ne pas déclarer les références!
    Dernière modification par AlainTech ; 29/05/2014 à 13h05. Motif: Suppression de la citation inutile

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut WHAAAAAAAT???
    Il y a plusieurs version en fonction des PC ???

    Je ne savais pas !

  6. #6
    Invité
    Invité(e)
    Par défaut
    mois j'ai une disparité de version pour les PC de ma boite 2003 sous xp, 2007 xp et win7, 2013 64Bit. une application n'est pas obligé de tourner sur le même PC.

    dans mes module j'utilise le moins possible le références je les distribue fréquemment.
    les référence sont lier à la version sur la machine de développement et à un emplacement bien précis: programme file pour les machine 32, Programme file (x86) ou Programme sur 64. le chemin la version sont embarqué dans le fichier Excel.
    Images attachées Images attachées  

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Michael, si la référence est activée donc déclaration par Dim en liaison anticipée (Early Binding)
    sinon déclaration tardive (Late Binding) via Set

    Les fiches VBA - Comprendre : Early ou Late Binding

    Développement en liaison anticipée mais livraison en liaison tardive …

  8. #8
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Marc-L,

    Bien lu et compris la différence entre Early et Late Binding.
    Comme expliqué dans le lien que tu m'as donné (et évident), le early binding permet d’allouer l'espace mémoire idéal à la variable déclarée (+ auto-complétion) et donc d'accélérer le code.

    Ce que j'ai un peu plus de mal à comprendre, c'est l'intérêt du Late Binding.

    rdurupt parle de l'emplacement des références. Si celles-ci sont déclarées dans les Références - VBAProjects il ne devrait pas y avoir de soucis, si ?

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Re bonjour

    Merci pour ces réponses ultra-rapides

    J'ai résolu le problème en supprimant "option explicit" et cela fonctionne .... Mais rdurupt semble laisser comprendre que ce n'est pas la bonne solution

    A bientot

    Daniel

  10. #10
    Invité
    Invité(e)
    Par défaut
    oui ce n'est pas bon pour des raisons d’écriture de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyValeur ="TOTO" 'tu affect une valeur à MyValeur
    if MiValeur <>"TOTO" then 'tu test en faisant une faute d’orthographe
    l'option explicite t'oblige à déclarer tes variable si tu te trompe dans l'écriture de ta variable Excel te le dit!
    Dernière modification par AlainTech ; 29/05/2014 à 13h08. Motif: Suppression de la citation inutile

  11. #11
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Kimy_Ire Voir le message
    Ce que j'ai un peu plus de mal à comprendre, c'est l'intérêt du Late Binding.
    En fait tout dépend de la bibliothèque utilisée, de la mobilité de l'applicatif et de l'utilisateur final …

    Pour une bibliothèque sans numéro de version comme par exemple Microsoft Scripting Runtime,
    peu de risque d'utiliser une déclaration anticipée.

    Mais si je développe depuis un ordinateur sous Office 2003 et dans le projet est référencé Outlook ou
    Word, bibliothèque en v11, lors de l'utilisation sur un autre ordinateur équipée d'une version Office supérieure,
    bibliothèque en v12, la déclaration anticipée coince car pointant toujours sur la v11 inexistante sur cet ordinateur …

    La déclaration tardive permet de s'affranchir des versions, incontournable pour un applicatif exécuté
    sur différentes versions d'Office dont les utilisateurs n'y connaissent rien en VBA …

    Le plus de la déclaration anticipée n'est pas tant au niveau de sa célérité
    - franchement avec les ordinateurs récents je ne sens pas de différence -
    mais un confort lors du développement avec l'auto-complétion du code par exemple …

  12. #12
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Ok. Merci pour cet éclairage.

    Juste un dernier point pour être sur de bien comprendre :
    le cas que tu explicites par rapport au projet référencé initialement en V11 pose soucis dans le cas où c'est le même fichier qui exécute la macro dans une version d'Excel différente (2003 vers 2007 ou plus) ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    oui si tu considère 32 bits et 64 Bits comme des version déférente pour la même relise d'EXCEL.
    Dernière modification par AlainTech ; 29/05/2014 à 13h09. Motif: Suppression de la citation inutile

  14. #14
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Kimy_Ire Voir le message
    le cas que tu explicites par rapport au projet référencé initialement en V11 pose soucis dans le cas où
    c'est le même fichier qui exécute la macro dans une version d'Excel différente (2003 vers 2007 ou plus) ?
    Tout à fait !

    Et comme expliqué par Robert dans le post #6,
    même avec la même version d'Office dans le cas d'un référencement d'Outlook ou de Word,
    il y aura un souci avec divers OS entre les ordinateurs …

    Donc développement en liaison anticipée mais livraison en liaison tardive …

  15. #15
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Ok. Merci bcp à vous deux !

  16. #16
    Invité
    Invité(e)
    Par défaut
    petite précision, si tu installais Office 2003 sur un 64 Bits il ce positionnerait dans le répertoire (x86) du point de vue environnementale, c'est une autre version que sur XP

Discussions similaires

  1. Executer macro word depuis Excel
    Par faube dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2007, 10h16
  2. Réponses: 2
    Dernier message: 15/06/2007, 10h55
  3. Question sur accès fichier word depuis excel (VBA)
    Par jerome.grange dans le forum VBA Word
    Réponses: 6
    Dernier message: 22/09/2006, 17h34
  4. coller une plage dans word depuis excel
    Par tarmin dans le forum VBA Word
    Réponses: 7
    Dernier message: 18/01/2006, 10h16
  5. Ouverture d'un template Word depuis Excel
    Par modus vivendi dans le forum VBA Word
    Réponses: 1
    Dernier message: 14/08/2005, 10h29

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