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

Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
- - Dernière réponse : 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
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 134 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
0
Merci
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
Commenter la réponse de Dourou71
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
0
Merci
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
Commenter la réponse de Dourou71
Messages postés
4
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
22 octobre 2010
0
Merci
C'était bien un problème de working directory.

Encore merci pour ton aide.

Alexis
Commenter la réponse de Dourou71