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

Résolu
Dourou71 Messages postés 4 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 22 octobre 2010 - 20 oct. 2010 à 11:25
Dourou71 Messages postés 4 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 22 octobre 2010 - 22 oct. 2010 à 11:06
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 oct. 2010 à 20:01
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.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 oct. 2010 à 14:32
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)
0
Dourou71 Messages postés 4 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 22 octobre 2010
20 oct. 2010 à 18:25
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
0
Dourou71 Messages postés 4 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 22 octobre 2010
22 oct. 2010 à 10:46
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dourou71 Messages postés 4 Date d'inscription mardi 19 octobre 2010 Statut Membre Dernière intervention 22 octobre 2010
22 oct. 2010 à 11:06
C'était bien un problème de working directory.

Encore merci pour ton aide.

Alexis
0
Rejoignez-nous