Lancement exécutable Python depuis VBA

bichon3001 Messages postés 9 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 14:09
bichon3001 Messages postés 9 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 15:16
Bonjour, j'ai crée un programme Python sur un problème de tournées de livraisons. Mon programme python ouvre un fichier csv, récupère les données et le ferme :
def lire():
ft=open('Tournee.csv','r')
......etc
ft.close()
...
return A #liste des données de Tournee.csv
villes=lire()

Ensuite algo + interface graphique tkinter

J'ai converti mon fichier en exécutable (avec py2.exe). Si je lance mon exécutable normallement : Ca marche.
Mais si je le lance depuis VBA :

toto = ActiveWorkbook.Path
RetVal = Shell(toto & "\Tournée.exe",1)

Ca ne marche que si je viens de créer la macro .Si je ferme mon classeur et si je le réouvre, Python me génère l'erreur :

IOError: [Errno 2] No such file or directory: 'Tournee.csv'

Alors que mon fichier est bien là !!!

Je suis dans une impasse, besoin d'un peu d'aide.
Merci

1 réponse

bichon3001 Messages postés 9 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 17 juillet 2009 1
17 juil. 2009 à 15:16
Bon apparement j'ai trouvé mais je ne sais pas pourquoi ça marche...
Donc, en VBA dans la partie déclaration :

Private Const SW_SHOWNORMAL = 1
Private Declare Function ShellExecute Lib "shell32.dll" Alias _
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal _
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Dans la macro :
toto = ActiveWorkbook.Path
ShellExecute 0, "open", "Tournée.exe", vbNullString, _
toto & "", SW_SHOWNORMAL
0
Rejoignez-nous