Dourou71
Messages postés4Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention22 octobre 2010
-
20 oct. 2010 à 11:25
Dourou71
Messages postés4Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention22 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 :
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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)
Dourou71
Messages postés4Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention22 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.
Dourou71
Messages postés4Date d'inscriptionmardi 19 octobre 2010StatutMembreDernière intervention22 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
Vous n’avez pas trouvé la réponse que vous recherchez ?