[Catégorie modifiée .Net --> VBA] ouverture de fichier par executable appelé par [Résolu]

Signaler
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
-
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
-
Bonjour,

J'ai fait une feuille excel qui doit appeler un executable externe pour faire des calculs a partir de données rentrées par l'utilisateur.

L'executable est issu d'un code en c, compilé avec Visual C++ et marche très bien appelé depuis le shell. Cet executable ouvre un fichier de données extérieur pour faire des calculs. Dans le c, j'ouvre le fichier avec :

if ((pfich=fopen("SGT_4.in","r"))==NULL)
{printf("Impossible d'ouvrir le fichier !\n"); }

Quand j'appelle cet executable depuis excel, à l'aide d'une macro vba :

RetVal = Shell("C:\Documents and Settings\mkfile\lundi_1.exe", 1)

il lance bien l'executable, mais n'ouvre pas le fichier et ne fait rien. il m'affiche le message d'erreur suivant :

File: f:dd\vctools\crt_bld\self_x86\crt\src\fprintf.c
Line: 55

Expression (str!=NULL)

Est ce que quelqu'un a une idée de ce qui ne va pas ?

Merci d'avance.

Alexis

5 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Est-ce que le nom du fichier à ouvrir est accompagné du répertoire ou bien prend-il le répertoire courant. Ce répertoire là peut changer entre une exécution directe et celle d'un Shell.
Ajoute une MsgBox en C avant l'ouverture du fichier pour vérifier quel est le répertoire (le disque ?) par défaut.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

La commande Shell, telle que tu l'as écrite, ne mentionne pas de fichier à ouvrir.
Dans ce cas, on suppose que ton exécutable connait le nom du fichier.
Est-ce que cela fonctionne si tu lances le même EXE (*) en double-cliquant dessus ?
(*) méfie toi de prendre celui du répertoire précisé dans la syntaxe du Shell.

De toute façon, cela ne peut pas être un problème VBA (et pas .Net) puisque VBA ne connait même pas ce fichier - ne s'en sert pas dans la syntaxe.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010

Salut,

Merci de ta réponse rapide.

Effectivement j'ai codé en dur le nom du fichier à ouvrir dans le c pour faire facile, je ne le passe pas en argument via vba.

Quand je clique sur mon exe, il se lance bien, ouvre une console et fait tout ce qu'il a à faire.

Je pense aussi que ce n'est pas un problème vba, mais je n'ai aucune idée de pourquoi il me renvoie vers fprintf.c alors que ça marche très bien quand je n'appelle pas via excel.


Alexis
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010

Salut,

Je pense que tu as raison, le problème doit venir de la façon dont je passe l'adresse du fichier (dans le code en c il ouvre dans le répertoire courant).

Alexis
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010

C'était bien un problème de working directory.

Encore merci pour ton aide.

Alexis