Microsoft 365 Exécuter un script python depuis vba

  • Initiateur de la discussion Initiateur de la discussion ivan27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ivan27

XLDnaute Occasionnel
Bonjour à tous,
Je suis sous windows 11 pro
Sur mon bureau j'ai un répertoire "dev" avec à l'intérieur, un petit script python "compteur.py".
Si j'exécute directement le fichier, soit par double clics soit depuis une console le code fonctionne bien.
A présent j'aimerais exécuter ce code depuis vba excel. J'ai essayé plusieurs méthodes mais impossible d'exécuter mon script python depuis VBA.
Je n'ai pas d'erreur et je ne sais plus où chercher.

VB:
Sub ExecutePython()
    Dim objShell As Object
    Set objShell = VBA.CreateObject("Wscript.Shell")
    
    Dim PythonExePath As String
    PythonExePath = """C:\Users\it1\AppData\Local\Programs\Python\Python312\python.exe"""
    
    Dim PythonScriptPath As String
    PythonScriptPath = """C:\Users\it1\Desktop\dev\compteur.py"""
    
    objShell.Run PythonExePath & " " & PythonScriptPath, 0, True
End Sub

Merci d'avance pour votre aide
Ivan
 
Rebonjour le forum, jurassic pork,
Ca ne fonctionne pas, quel que soit le code python utilisé.
Voici par exemple un code tous simple qui écrit les valeurs de 3 variables dans un fichier "output.txt".

Python:
from datetime import datetime
import traceback

try:   
    now = datetime.now()

    year_second_digit = str(now.year)[-1] 
    month_second_digit = str(now.month)[-1] 

    ID = f"Z{year_second_digit}{month_second_digit}{now.strftime('%d%H%M%S')}{int(now.microsecond / 1000):03d}"
    DTE = now.strftime('%y%m%d')
    HRE = now.strftime('%H%M')

    with open('output.txt', 'w') as file:       
        file.write(f"{ID}\n")
        file.write(f"{DTE}\n")
        file.write(f"{HRE}\n")

except Exception as e:
    with open('error_log.txt', 'w') as error_file:
        error_file.write(str(e))
        error_file.write('\n')
        error_file.write(traceback.format_exc())
 
Bonjour ivan27, jurassic

Et avec ce genre de code 🤔
VB:
Sub RunPythonScript()
    Dim pythonExecutable As String
    Dim scriptPath As String
    Dim command As String    
    ' Spécifiez le chemin de l'exécutable Python
    pythonExecutable = "C:\Path\To\Python\python.exe"
    ' Spécifiez le chemin du script Python
    scriptPath = "C:\Path\To\Your\Script\script.py"
    ' Construire la commande
    command = pythonExecutable & " " & scriptPath
    ' Exécuter la commande
    Shell command, vbNormalFocus
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour