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 :

Problème de chemin de répertoire


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Par défaut Problème de chemin de répertoire
    Bonjour à tous,

    J'ai un fichier .exe que j'ai codé en c++ et compilé avec visual c++ express.

    Lorsque je double clic dessus, le programme s’exécute normalement mais lorsque que j'appel ce fichier via un programme en VBA sous excel il y a un problème.

    En VBA j'utilise la fonction Shell :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "C:\chemin\test9.exe", 1
    Voici le problème :
    Je demande à mon programme de me retourner le chemin complet d'un fichier excel. Lorsque je double clic sur mon fichier .exe alors il me retourne bien le chemin complet mais lorsque j'appel ce même programme via VBA alors il me retourne un chemin incomplet.

    Exemple :
    Chemin retourné en double cliquant sur l’exécutable :
    C:\Documents and Settings\Bureau\Strat2\Annexe\NomFichier

    Chemin retourné en appelant l’exécutable via VBA:
    C:\Documents and Settings\Mes documents\NomFichier

    Pour obtenir le chemin du répertoire de l'application voici mon code c++ (le fichier Excel étant dans le même répertoire que l’exécutable) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char CurrentPath[FILENAME_MAX];
    GetCurrentDir(CurrentPath, sizeof(CurrentPath));
    Pouvez vous, s'il vous plait, m'aider a faire en sorte que mon programme .exe ouvert a partir de VBA me renvoi bien le bon chemin.

    Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    Ma question est sans doute idiote, mais pourquoi passer par un fichier exe externe, tu cherches a trouver quoi? le chemin de quel fichier?
    Si c'est le chemin de ton fichier Excel (c'est surement pas ça, mais je comprend pas bien tes explications, la récupération du chemin n'est peut être qu'un prétexte pour mettre en évidence le problème de retour de répertoire)
    Donne nous plus de détail sur ce que tu cherches a réaliser, il y a beaucoup d'outils accessibles en vb sans avoir à bidouiller avec du shell .

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Par défaut
    Merci Qwazerty

    Oui oui je connait très bien les solutions possible en utilisant tout simplement VBA mais dans mon projet je doit faire appel à une fonction codé en c++ pour exécuter certaine tache beaucoup plus rapidement que si elle était exécuté via VBA.

    Mon fichier .exe ce trouve dans le même répertoire que les fichier excel.
    Le fichier .exe va donc effectué une série de tache sur les fichier Excel mais pour faire cela le code c++ à besoin d'avoir le chemin des ces fichier Excel.
    Le code c++ utilisé à l'intérieur du fichier .exe pour trouvé ce chemin est tout simplement l'équivalent pour VBA de : Thisworkbook.Path
    code c++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char Chemin[FILENAME_MAX];
    GetCurrentDir(Chemin, sizeof(Chemin));

    Mon Exécutable marche parfaitement seul (en double cliquant simplement dessus les tache demandé sont exécuté parfaitement sur les fichier Excel) mais si j'appel l'exécutable via VBA alors l'exécutable ne trouve pas les fichier Excel.

    Après avoir investigué sur le problème, je me suis aperçu qu'en appelant l'exécutable via VBA alors le chemin que le code c++ renvoyait n'était plus le même que lorsque je double cliquai simplement sur l'icone de mon fichier .exe.

    Chemin retourné en double cliquant sur l’exécutable (c'est le bon chemin, c'est à dire celui ou ce situ mes fichier Excel) :
    C:\Documents and Settings\Bureau\Strat2\Annexe\NomFichierExcel

    Chemin retourné en appelant l’exécutable via VBA (le chemin à changé. En appelant le fichier .exe via VBA mon exécutable à changé le chemin dans lequel il devait aller chercher mes fichier Excel):
    C:\Documents and Settings\Mes documents\NomFichierExcel

    Du fait que le problème apparaît lorsque j'appel mon exécutable via VBA alors je pense que le souci vient de VB.

    Voila, j'espère que j'ai été un peut plus claire

    Merci

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut
    En effet, c'est plutôt étonnant.
    As tu essayé de mettre ton répertoire de travail ailleurs que sur le bureau? Je sais que le "dossier" bureau est gère un peu différemment des autres, il génère peut être des fichier temporaire dans d'autre répertoire.
    Il existe des petits softs de surveillance avec lesquels tu peux catcher les demandes de ton exécutable (FileMon.exe) tu peux filtré sur ton fichier exe et tu verras à quels fichiers il essai d'accéder, tu verras peut être apparaître des échecs.
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  5. #5
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    tu as essayé en faisant ceci?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    chdir "C:\Chemin\"
    Shell "C:\chemin\test9.exe", 1
    parce que, si je te suis , tu lance ton executable en partant du répertoire courant de VBA et non a partir de son emplacement physique...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 17
    Par défaut
    Merci mayekeul

    Ta réponse à résolu mon problème.

    Je ne comprend toujours pas pourquoi cela ne marchais avant mais bon maintenant cela fonctionne.
    Je lance mon exécutable à partir du même dossier que le classeur Excel contenant le code VBA.

    Aller encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/04/2013, 16h52
  2. Problème de chemin de répertoire
    Par choux22 dans le forum C++
    Réponses: 3
    Dernier message: 12/01/2011, 16h20
  3. problème avec les chemins de répertoire
    Par psychoBob dans le forum Langage
    Réponses: 12
    Dernier message: 28/05/2006, 10h39
  4. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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