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 :

Ouverture de fichiers extérieurs à Excel à partir d'une userform excel?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut Ouverture de fichiers extérieurs à Excel à partir d'une userform excel?
    Bonjour à tous

    Je souhaite ouvrir des fichiers d’assemblages d’un logiciel de dessin 3D à partir d’une UserForm sur Excel. Je suis tout d’abord passé par des liens hypertexte mais il se trouve que cette méthode empêche le recalcule de mon assemblage qui se met en carafe. Donc je suis passé par une condition « Shell » du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ShellOuvrir()
           Shell """C:\Program Files\Solid Edge V20\Program\Edge.exe"" ""C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm""", vbMaximizedFocus 
    End Sub
    Avec cette méthode, l’ouverture et le recalcule de mon assemblage se fait sans problème (relations entre les différentes pièces et dimensions des pièces). Cependant je suis obligé de répéter plusieurs fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell """C:\Program Files\Solid Edge V20\Program\Edge.exe"" ""C:\Documents and Settings\....
    pour ouvrir plusieurs assemblages à la fois et du coup il m’ouvre autant de fois le logiciel 3D.
    Pour être plus claire, pour « n » assemblage ouvert j’ai « n »fois le « Edge.exe » ouvert.
    Est-ce que quelqu’un peut m’expliquer comment faire pour ouvrir plusieurs fichiers d’assemblage dans un seul « Edge.exe » ou m’aiguiller sur une autre méthode ?

    Je vous remercie d’avance de l’attention apporté à mon problème.
    Cordialement Le Dumpill

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Tu ne peux pas les ouvrir en rajoutant des arguments dans la même ligne?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    J’ai essayé de plusieurs manière différente comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ShellOuvrir()
           Shell """C:\Program Files\Solid Edge V20\Program\Edge.exe"" ""C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"" ""C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Cadre AR STD.asm""", vbMaximizedFocus
    End Sub
     
    ‘ou bien
     
    Sub ShellOuvrir()
           Shell """C:\Program Files\Solid Edge V20\Program\Edge.exe"" ""C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm""&""C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Cadre AR STD.asm""", vbMaximizedFocus
    End Sub
    Et j’en passe…mais ça n’a rien donné…je n’ai que le premier assemblage qui s’ouvre.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    752
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 752
    Points : 832
    Points
    832
    Par défaut
    Essaye de mettre des virgules entre tes différents arguments.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    J'ai placé des virgule comme tu me dis mais j'en suis toujours au même point

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ShellOuvrir()
           'Shell """C:\Program Files\Solid Edge V20\Program\Edge.exe"" ""C:\Documents and Settings\dhume\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"", ""C:\Documents and Settings\dhume\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Assemblage pavillon.asm""", vbMaximizedFocus
    End Sub
    J'ai aussi rajouté/suprimé des guillemets, déplacé les virgules mais à part le plantage, rien...

    Si j'ai faux...pas taper!!!

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Bonjour Decondelite , Bonjour le forum

    Pas besoins de savoir comment fonctionne mon logiciel 3D (enfin je pence pas…).

    Je suis sur la partie Excel de mon travail où j’ai créé plusieurs UserForm qui me servent à renseigner le type de produit que l’on souhaite dans le classeur .xls et, selon ce qui est dit, des liens hypertexte relier à mes assemblages 3D ce mettent en place. Donc dans le but de réduire les manipulations j’ai terminé mon code par la simulation de clic sur ces liens. Ce qui fonctionné très bien jusqu’à ce que je me rende compte que cette manière d’ouvrir mes assemblages 3D les faisaient ce planter (en gros c’est une histoire de relations entre pièces qui sont sensée être égale à 0 mm et qui ce retrouvent sans dire pourquoi à 300 mm). C’est pourquoi j’essaye d’une autre manière et comme tout ce que je fais avec les macros, je l’apprends sur le tas, la je sollicite un petit coup de pouce parce que je sèche….

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    J'avance un peu
    Sur un autre forum on m'a proposé un code que j'ai un peu bidouillé pour obtenir un résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ShellOuvrir()
     
    For x = 1 To 2 Step 1                                  'deux fichiers a ouvrir
      stAppName = "C:\Program Files\Solid Edge V20\Program\Edge.exe"    'chemin de l'application
     
            If x = 1 Then chemin = """C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"""      'chemin du premier fichier
     
            If x = 2 Then chemin = """C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Assemblage pavillon.asm"""             'chemin du second fichier
     
                stAppName = stAppName & "  " & chemin
                   Call Shell(stAppName, vbMaximizedFocus)
    Next x
    End If
    Mon problème est en partie résolu car il reste un petit détail à régler :
    Les deux fichiers s’ouvrent dans deux « Edge.exe » différent. Ce qui prend un temps fou d’ouverture et qui n’est pas pratique à l’utilisation (et je ne lui en demande que 2 pour l'instant alors que je peux en avoir plus de 20...).
    Donc n’y a-t-il pas un moyen de faire s’ouvrir tous les documents dans le même « Edge.exe » ?

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour

    Citation Envoyé par dumpill Voir le message
    et, selon ce qui est dit, des liens hypertexte relier à mes assemblages 3D ce mettent en place. Donc dans le but de réduire les manipulations j’ai terminé mon code par la simulation de clic sur ces liens. Ce qui fonctionné très bien jusqu’à ce que je me rende compte que cette manière d’ouvrir mes assemblages 3D les faisaient ce planter
    Question : quand tu ouvres en cliquant les liens ypertextes, cela se passe comme tu veux?
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Bonjour pgz

    Non pas du tout.
    Enfin...cela m'ouvre bien mes assemblages...mais la mise à jour des ces derniers ne se fait pas correctement et c'est donc pour ça que je cherche une autre solution d'ouverture.

  10. #10
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bon, alors une idée, pas très sûre.

    Si tu ouvres une première fois l'appli avec Shell, tu peux récupérer de processID. Avec ca on pourrait envisager de chercher le handle de la fenêtre. Avec le handle de la fenêtre ou peut utiliser ShellExecute.

    Tu vois l'idée? Bon ce n'est pas du tout cuit, et peut-être qu'au final cela ne marche pas...

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Bonjour PGZ
    Peut tu m’en dire plus car j’avoue avoir une connaissance quelque peu limité dans le domaine et je n’ai pas tout compris .Mais même si cela ne fonctionne pas, ce sera toujours bon connaitre.

  12. #12
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    A mon avis, première étape : au lieu d'ouvrir avec la méthode Shell, utilise l'API ShellExecute. Et regarde comment cela se passe de cette façon.

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    As-tu un exemple de la mise en place du « ShellExecut » , sur lequel je puisse m’appuyer ?
    …je rame un peu…..

  14. #14
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Tu devrais facilement trouver sur le web. En gros cela ressemble à ça:
    tu déclares l'API
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
                                                                            ByVal lpOperation As String, _
                                                                            ByVal lpFile As String, _
                                                                            ByVal lpParameters As String, _
                                                                            ByVal lpDirectory As String, _
                                                                            ByVal nShowCmd As Long) As Long
    les constantes dont tu as besoin, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Const ShExShowNormal = 1&
    et quand tu utilises tu ne mets que le chemin du fichier, pas de l'applicatif. Par exemple dans ton cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sFile = "C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"
    RetVal = ShellExecute(0&, "Open", sFile, ByVal 0&, 0&, ShExShowNormal)
    A mettre au point.
    Puis tu le fais 2 fois avec 2 fichiers différents et tu vois ce que cela donne.

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Pour voir ce que sa faisais, j’ai mis ton code tel quel puis je l’ai exécuté.
    Il me dit :
    « Erreur de compilation : instruction incorrecte à l’extérieur d’une procédure » pour la ligne « sFile = »
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const ShExShowNormal = 1&
    sFile = "C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"
    RetVal = ShellExecute(0&, "Open", sFile, ByVal 0&, 0&, ShExShowNormal)
    End Sub

  16. #16
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Je n'ai pas dû être trop clair.

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const ShExShowNormal = 1&
     
    sub subOuvreFile
    dim sFile as string, RetVal as long
     
    sFile = "C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"
    RetVal = ShellExecute(0&, "Open", sFile, ByVal 0&, 0&, ShExShowNormal)
    End Sub
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Cette méthode ouvre bien mon fichier assemblage cependant elle l’ouvre deux fois (dont une fois en lecture seule) ce que je ne comprends pas. Donc il reste à régler ce problème et à faire s’ouvrir plusieurs assemblages.

  18. #18
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Et si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Private Const ShExShowNormal = 1&
     
    sub subOuvreFile
    dim sFile as string, RetVal as long
     
    sFile = "C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Face AV STD.asm"
    RetVal = ShellExecute(0&, "Open", sFile, ByVal 0&, 0&, ShExShowNormal)
    sFile = "C:\Documents and Settings\Nom du PC\Bureau\Lancement des carrosseries\Dossier Gamme Basse\Fourgon GB\Assemblage pavillon.asm"
    RetVal = ShellExecute(0&, "Open", sFile, ByVal 0&, 0&, ShExShowNormal)
    End Sub
    Ca donne quoi?
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 15
    Points : 1
    Points
    1
    Par défaut
    Non rien à changé. Toujours les même problèmes…..

  20. #20
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Et quand tu ouvres ces 2 fichiers par click dans l'explorateur, l'exe se lance une fois, ou deux?
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

Discussions similaires

  1. [XL-2007] Remplir une feuille Excel à partir d'un UserForm
    Par djgreg971 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/12/2013, 15h03
  2. [XL-2003] activer Excel à partir d'une macro Excel
    Par didouss dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/09/2012, 10h56
  3. [AC-2007] Ouverture d'une fichier Excel à partir de VBA (avec Excel 2007 au lieu de 2003)
    Par courriervirtuel dans le forum VBA Access
    Réponses: 0
    Dernier message: 06/10/2011, 18h19
  4. insertion dans une table excel à partir d'une requête access ?
    Par cameleon1881 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/04/2009, 17h57
  5. Ouverture de fichier Excel à partir d'une page en PHP
    Par leclone dans le forum Langage
    Réponses: 15
    Dernier message: 03/01/2007, 18h00

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