message: Error: invalid file handle used - VB/VBA/VBS - Programmation
Marsh Posté le 12-04-2005 à 10:23:45
Petite information supplémentaire 
Il arrive que j ai le message: permission refusée!!! 
merci
Marsh Posté le 12-04-2005 à 10:25:38
Petite précision il m arrive d avoir le message: permission refusée!!!!!
Marsh Posté le 12-04-2005 à 10:30:49
Je pense que tes deux jobs écrivent dans le même fichier de log? 
 
Le problème vient de là j'imagine. Tu dois ouvrir le fichier en mode exclusif (pour y écrire ça paraît logique) dans un des jobs et au même moment l'autre job essaie de faire la même chose donc forcément ça merde! 
 
A mon avis, tu as deux solutions (mais j'ai pas la science infuse et peut-être qu'il y a mieux à faire): 
1/ Tu écris dans deux fichiers séparés 
2/ Dans l'écriture du fichier log tu fais une gestion d'erreur qui teste que le fichier log n'est pas déjà ouvert et si c'est le cas, tu boucles en attendant qu'il soit disponible 
 
Voilà, j'espère que c'est clair et que cela te convient. Si c'est pas le cas, essaie de fournir les bouts de codes qui plantent.
Marsh Posté le 12-04-2005 à 10:46:25
Merci mais comment faire la gestion d erreur qui teste que le fichier n est pas deja ouvert et je boucle en attendant 
merci
Marsh Posté le 12-04-2005 à 14:33:28
Regarde dans l'aide de VB :-) 
 
Mais en gros, ça donne ça: 
 
Sub EcrireFichierLog 
  Dim ... 
  On Error Goto Gestion_erreur 
  ... 
  Exit Sub 
Gestion_erreur: 
  Select case Err.Number 
  Case le_no_erreur_fichier_deja_ouvert 
    Boucle 
  Case Else 
    MsgBox Err.Number & " " & Err.Description 
  End Select 
 
Voilà... Si jamais les "..." c'est ton code standard. Fais attention à ne pas oublier le "Exit Sub" tout à la fin (avant l'étiquette) sinon ton prog passera toujours par le code de gestion d'erreur et c'est pas le but. 
 
Ensuite, concernant la boucle, le plus simple serait de faire un simple "Resume" (c'est à dire qu'il va revenir sur la ligne de code qui a généré l'erreur) mais en faisant ça, tu risque de créer une boucle infinie si le fichier n'est jamais libéré...  
 
Donc tu as intérêt à faire une boucle à la main qui tourne pendant un certain nombre de fois. Pour ça tu peux soit utiliser un timer soit un boucle for...next 
 
Mais bon ce qui me paraît étrange c'est que ton programme essaie d'écrire au même moment dans le même fichier... Pourrais-tu fournir le code? 
 
A+
Marsh Posté le 12-04-2005 à 10:08:36
Bonjour,
Je vous expose mon problème
J ai 2 jobs qui tourne en même temps et chacun doit écrire dans un fichier log
Dans chaque job, la fonction ecrirefichierlog ouvre le fichier log, ecrit une ligne puis ferme le fichier log mais il y a des pb:
L un des job se plante de temps en temps avec le message:
Error: Invalid file handle used
Comment tester dans le fonction ecrirefichierlog si le fichier log est disponible car je pense que le pb est là?????
Merci de vous pencher sur mon problème