PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Type OLE probleme automatisation
Type OLE probleme automatisation
Débuté par Mathieu, 17 avr. 2025 12:12 - Aucune réponse
Posté le 17 avril 2025 - 12:12
Bonjour,

J'ai une application Windev sur un serveur qui fonctionne très bien lorsque je lance le .exe en double cliquant dessus. Mais si je le lance en tâche planifiés, j'ai ces erreurs :

17/04/2025 09:50:05:11 - ------------- Test avant Open -----------
17/04/2025 09:50:06:00 - Erreur fatale globale capturée : Vous avez appelé la méthode Automation 'Open'.
En tentant d'invoquer la méthode <Open> ou de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles :

• Le nom du fichier ou le chemin d'accès n’existe pas.
• Ce fichier est actuellement utilisé par un autre programme.
• Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.'
En tentant d'invoquer la méthode <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles :

• Le nom du fichier ou le chemin d'accès n’existe pas.
• Ce fichier est actuellement utilisé par un autre programme.
• Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.'
En tentant de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 800A03EC : Microsoft Excel ne peut accéder au fichier « D:\Outils\Rapport_outlook\rapports\17_04_2025_consolidated_report.xlsx ». Plusieurs raisons sont possibles :

• Le nom du fichier ou le chemin d'accès n’existe pas.
• Ce fichier est actuellement utilisé par un autre programme.
• Le classeur que vous essayez d’enregistrer porte le même nom qu’un classeur actuellement ouvert.'
En tentant d'écrire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 800A03EC : Impossible de définir la propriété Open de la classe Workbooks.'
Ce dont je suis sur :
- Il n'y pas d'excel ouvert donc il n'y a pas de conflit etc
- La taches planifiés est lancé avec le compte de l'admin avec la case "Executer avec les autorisations maximales". Il a également coché la case "Executer même si l'utilisateur n'est pas connecté"
- Il n'y a pas de soucis de chemin, les fichiers dont il parle sont bel et bien enregistrer dans le bon dosssier
- Le fichier n'est pas utilisé par un autre programme

Est ce que vous avez des pistes pour régler le soucis ?

Voici le code qui génère le problème :

Procedure OpenAllHtmlFiles(sDossier est une chaîne, sFichierExcel est une chaîne)

SI PAS fFichierExiste(sFichierExcel) ALORS
ErreurAvecLog(100, "[OpenAllHtmlFiles] Le fichier Excel n'est pas accessible : " + sFichierExcel)
RETOUR
FIN

arrFichiers est un tableau de chaînes = ListeHtmlFiles(sDossier)
SI Dimension(arrFichiers) = 0 ALORS
ErreurAvecLog(100, "[OpenAllHtmlFiles] Rien à afficher (aucun fichier HTML trouvé)")
RETOUR
FIN

xlApp est un objet OLE dynamique = allouer objet automation "Excel.Application"
SI ErreurDétectée ALORS
ErreurAvecLog(100, "[OpenAllHtmlFiles] Impossible de lancer Excel en OLE Automation (OpenAllHtmlFiles)")
RETOUR
FIN
xlApp>>Visible = Vrai

SI xlApp = Null ALORS
ErreurAvecLog(100, "[OpenAllHtmlFiles] Impossible de démarrer Excel en mode invisible.")
RETOUR
FIN
ErreurAvecLog(100, "------------- Test avant Open -----------")

finalWb est un objet OLE dynamique = allouer objet automation "Excel.Application"
finalWb = xlApp>>Workbooks>>Open(sFichierExcel)
SI ErreurDétectée ALORS
ErreurAvecLog(100, "[OpenAllHtmlFiles] Impossible d'ouvrir le fichier final (OpenAllHtmlFiles) : " + sFichierExcel)
xlApp>>Quit()
RETOUR
FIN
ErreurAvecLog(100, "------------- Test 3 ---------")
nNbFeuilles est un entier = finalWb>>Sheets>>Count
tabFeuilles est un tableau associatif d'entiers

POUR i = 1 À nNbFeuilles
sNomFeuille est une chaîne = finalWb>>Sheets>>Item(i)>>Name
tabFeuilles[sNomFeuille] = i
FIN

POUR TOUT sFichierHtml de arrFichiers

tempWb est un objet OLE dynamique = xlApp>>Workbooks>>Open(sFichierHtml)
sDateFeuille est une chaîne = ExtractDateFromFileName(sFichierHtml)

SI tabFeuilles[sDateFeuille]..Existe ALORS
nIndexFeuille est un entier = tabFeuilles[sDateFeuille]
finalWb>>Sheets>>Item(nIndexFeuille)>>Activate()

SI xlApp>>ActiveSheet>>Name <> sDateFeuille ALORS
xlApp>>ActiveSheet>>Name = sDateFeuille
FIN

tempWs est un objet OLE dynamique = tempWb>>Sheets(1)
finalWs est un objet OLE dynamique = finalWb>>Sheets(sDateFeuille)

nLigneB est un entier = finalWs>>Cells(finalWs>>Rows>>Count, 2)>>END(-4162)>>Row
nLigneD est un entier = finalWs>>Cells(finalWs>>Rows>>Count, 4)>>END(-4162)>>Row
nLigneF est un entier = finalWs>>Cells(finalWs>>Rows>>Count, 6)>>END(-4162)>>Row

nLigneDebut est un entier = Max(nLigneB, nLigneD, nLigneF) + 2

ExtraireBootCatalogCorpsMail(finalWb, sDateFeuille, nLigneDebut, ChaîneVersDate(sDateFeuille))

iLigneDebutPremierTab est un entier = nLigneDebut + 4
tempWs>>Range("A8:J13")>>Copy(finalWs>>Range("A" + iLigneDebutPremierTab))

nDerniereLigneTmp est un entier = tempWs>>Cells(tempWs>>Rows>>Count, 1)>>END(-4162)>>Row
iLigneDebutDeuxiemeTab est un entier = iLigneDebutPremierTab + 7
tempWs>>Range("A27:J" + nDerniereLigneTmp)>>Copy(finalWs>>Range("A" + iLigneDebutDeuxiemeTab))

AppliquerFiltreSurColonneC(finalWs, iLigneDebutDeuxiemeTab)

tempWb>>Close(Faux)
tempWs = Null
tempWb = Null
FIN

FIN

POUR i = 1 _À_ finalWb>>Worksheets>>Count
finalWb>>Worksheets(i)>>Activate
finalWb>>ActiveSheet>>Columns("A:M")>>AutoFit
finalWb>>ActiveSheet>>Range("B1:G1")>>Font>>Color = RVB(255,255,255)
finalWb>>ActiveSheet>>Range("B1:G1")>>Font>>Bold = True

SI finalWb>>ActiveSheet>>Name = "Historique" ALORS
finalWb>>ActiveSheet>>Range("A1:B1")>>Font>>Color = RVB(255,255,255)
finalWb>>ActiveSheet>>Range("A1:B1")>>Font>>Bold = True
FIN
FIN

finalWb>>Save()
finalWb>>Close()
xlApp>>Quit()

xlApp = Null
finalWb = Null


Le compte qui execute la tâche planifié est admin, il a absolument tous les droits. Et si dans ma tâche planifié, je coche "Exécuter uniquement si l’utilisateur est connecté", l'application se lance sans soucis. Mais dès l'instant ou je lance en cochant la case "Exécuter, même si aucun utilisateur n'a ouvert de session", ça ne fonctionne plus et j'ai l'erreur du dessus. Dans mon appli, j'utilise également d'autres fichiers excels qui ne pose aucun soucis d'ouverture etc, cependant les autres fichiers excels sont de type xlsDocument, là ou pour cette procédure, il est de type OLE dynamique (surement la cause du problème, seulement j'arrive pas a faire autrement). J'espère que quelqu'un pourra m'aider.

Merci d'avance