Monitoring d'applications Excel et Access

Monitoring d'applications Excel et Access - VB/VBA/VBS - Programmation

Marsh Posté le 25-11-2010 à 10:06:35    

Bonjour,  
 
J'ai 4 postes sous Windows XP. Sur chaque poste, plusieurs "robots" (acquisition/dispatching de données, analyse des données, reporting) développé en VBA sous Excel et Access.  
 
L'un des problèmes est que les robots plantent relativement souvent (certains sont tellement mal développés qu'ils plantent tous les jours), et comme je ne peux pas passer mon temps à monitorer les 4 postes, je cherche une solution ou c'est une application qui monitorerait les robots et qui m'enverrait un e-mail lorsque l'un des robots à planté.  
 
J'ai déjà essayé d'installer VNC, mais cela fonctionne très mal (les 4 postes utilisent souvent 100% du CPU, donc l'affichage de l'écran met 3 plombes, j'ai plus vite fait de me lever et d'aller directement dans la salle serveurs).  
 
D'avance, merci de votre aide.

Reply

Marsh Posté le 25-11-2010 à 10:06:35   

Reply

Marsh Posté le 25-11-2010 à 18:26:30    

Sans en savoir plus sur les applications, on va pas pouvoir t'aider :o
 
Tu veux juste surveiller les process ?
 

Reply

Marsh Posté le 29-11-2010 à 09:15:23    

Bonjour,
 
Les robots sont des applications excel ou access qui tournent en permanence. Ce ne sont pas des .exe, mais des .mdb ou des .xls. Donc les robots tournent sous les process ACCESS.EXE et EXCEL.EXE.
 
Le monitoring de process ne suffit pas, puisque si le robot plante, un message d'erreur s'affiche (genre "l'indice n'appartient pas à la selection" avec des boutons "fin" ou "débogage" ) et le process reste ouvert (tant que le message d'erreur est à l'écran).
 
Ce qui m'intéresse, c'est de savoir que l'application à planté, c'est tout. Je ne peux pas non plus modifier les robots pour faire de la gestion d'erreur par manque de temps.

Reply

Marsh Posté le 29-11-2010 à 09:19:18    

T'aura plus vite fait de rejouter de la gestion d'erreur dans les process (sans regarder le code...).
Au moins les applis se fermerait comme il faut sur un plantage, et tu te
ferais moins chier vu que le monitoring de process suffirait enfin.

Reply

Marsh Posté le 29-11-2010 à 09:20:35    

et d'ailleur sur la gestion d'erreur tu devrais avoir moyen de renseigner un log, et en surveillant ce log, de te faire envoyer un e-mail.

Reply

Marsh Posté le 29-11-2010 à 09:46:12    

Qu'est ce que tu entends par "gestion d'erreur dans les process" ?
 
Aurais-tu un exemple ?

Reply

Marsh Posté le 29-11-2010 à 10:06:00    

leusha a écrit :

Qu'est ce que tu entends par "gestion d'erreur dans les process" ?
 
Aurais-tu un exemple ?


 
 
les erreurs dont tu parle sont des erreurs "non gérées".
 
en gros VBA ne sait pas quoi faire et te pose la question : débugage ? ou pas ?
 
 
faire une gestion d'erreur
 
Exemple, ma fonction VBA suivante permet de supprimer un Onglet dans Excel, le code en rouge permet de faire en sorte qu'elle ne "plante jamais"
 

Citation :


' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
' Procédure   : fg_SupprimeOnglet
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' Création    : 09/02/2008
' Auteur      : Xavier Ferrer
' Version     : 1.0
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' Entrée      : strNom -> nom de la Onglet Excel à creer dans le classeur actif
' Sortie      : booléen 'True' si succès, 'False' sinon
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' Description : Suppression d'une Onglet Excel selon le nom spécifié (et si elle existe)
' = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Public Function fg_SupprimeOnglet(strNomOnglet As String) As Boolean
On Error GoTo fg_SupprimeOnglet_Error
 
   fg_SupprimeOnglet = False
   With ActiveWorkbook
      If fg_ExistanceOnglet(strNomOnglet) Then
         Application.DisplayAlerts = False
         .Worksheets(strNomOnglet).Delete
         Application.DisplayAlerts = True
      End If
   End With
   fg_SupprimeOnglet = True
 
Exit Function
fg_SupprimeOnglet_Error:

End Function
 


 
Par contre toi au lieu de ne rien faire, t'aurais interret a te faire une routine de création de fichier log d'erreur, et de dire a l'application de se fermer...
 
puis tu "copie"-"colle" ta gestion d'erreur partout, dans chaques fonctions, chaques procédures, chaques évenements de tes "robots"...
 
un petit journée de boulot :o
 
 
 
 

Reply

Marsh Posté le 29-11-2010 à 18:14:56    

ça c'est de la gestion d'erreur intégrée... rien à voir avec de la gestion de process...
si j'avais le temps de modifier le code-source je le ferai, mais ce n'est pas le cas.
 
Merci quand même de ton aide.

Reply

Marsh Posté le 29-11-2010 à 18:22:30    

techniquement, je ne vois pas comment monitorer un script VBA qui est en "pause" (cad qui attend une action utilisateur) à cause d'une erreur non gérée.
 
ptetre en détectant la fenêtre qui pose la question ?
 
mais la c'est de la programation windows.
en VBA je ne pense pas que t'ai la solution.
 
et a mon avis tu passeras moins de temps a rajouter la gestion d'erreur intégrée :D
(ou la faire rajouter...)


Message édité par Xxxaaavvv le 29-11-2010 à 18:23:19
Reply

Marsh Posté le 30-11-2010 à 08:17:50    

"en VBA je ne pense pas que t'ai la solution. " -> justement, il n'a jamais été question de le faire VBA. Relis ma question.
 
"mais la c'est de la programation windows." -> effectivement j'ai trouvé un moyen avec AutoIT de détecter l'apparition d'une telle fenêtre.

Reply

Marsh Posté le 30-11-2010 à 08:17:50   

Reply

Marsh Posté le 06-12-2010 à 00:31:05    

Il existe des codes à lancer dans chaque projets vba qui rajoutent automatiquement des gestions d'erreur dans toutes les procédures et fonction et qui les tracent sur un log.
Je n'en ai pas sous la main, mais j'en ai déjà vu fonctionner plutôt pas mal.


---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed