Problème de fichier log [Résolu]

Signaler
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007
-
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007
-
J’ai déjà écrit un code qui fonctionnait parfaitement, et puis un jour il a décidé de ne plus fonctionner…<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>








 







Voila mon code :









mslogFile = "C:" & Trim(Replace(CStr(Date), "/", "")) & "-" & Trim(Replace(CStr(Time), ":", "")) & ".log"












mnLFile = FreeFile












Open mslogFile For Append As #mnLFile











 







Et après j’écrit dans ce fichier que je viens de créer, mais l’erreur est dans la ligne du Open…








 







PS : ce code fonctionnait, je ne sais plus ce qui c’est passé








 







Plllzzz help

21 réponses

Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Ben reste plus que les droits d'accès alors ...

J'ai reproduit le même message sur mon poste soit en ayant lecture seul sur le fichier soit avec lecture seul sur le répertoire ...

déjà mettre des fichiers C: c'est joué avec le feux ....  et c'est pas très jolie ...  essaye avec par exemple C:\temp ou c:\log

dans mon cas j'ai testé c:\temp\log\MonFichier.log 

Si lecture seul sur le fichier erreur 75 , si lecture seul sur le répertoire ( et pas sur fichier ) erreur 75

essaye peut être d'avoir des infos sur les attributs du fichier :
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long

MsgBox GetFileAttributes("c:\temp\log\MonFichier.log ") retourne 32 si écriture 33 sinon (ou autre)
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Défois que...est-ce que tu as bien déclarer : mnLFile (Dim.....) ?

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

oui oui j'ai  bien mis avant:
Dim mnLFile As Long
Dim mslogFile As String

desolé j'ai oublier de les poster...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
salut,
quel est le message d'erreur?
es-tu certain que çà soit sur cette ligne?
copie la sub/fonction au complet stp

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

ils me disent numero d'erreur: 75
oui oui je suis sur que l'erreur est sur cette ligne (ligne en rouge)
voila la fonction:

Public Function connexion_DataBase_LogFile() As Boolean

On Error GoTo connexion_DataBase_LogFile_Err
    Dim mnLFile As Long
    Dim mslogFile As String
   
   
    Forms("Formulaire Etat avancement").Liste3.RowSource = Forms("Formulaire Etat avancement").Liste3.RowSource & ";Connexion BDD"
    
    mslogFile = "C:" & Trim(Replace(CStr(Date), "/", "")) & "-" & Trim(Replace(CStr(Time), ":", "")) & ".log"
    
    mnLFile = FreeFile
    Open mslogFile For Append As #mnLFile
    Forms("Formulaire Etat avancement").Liste3.RowSource = Forms("Formulaire Etat avancement").Liste3.RowSource & ";Terminé"



connexion_DataBase_LogFile_Exit:
    connexion_DataBase_LogFile = True
    Exit Function



connexion_DataBase_LogFile_Err:
    CurrentDb.Execute "INSERT INTO TableErreurs(methode,numeroErreur,dateErreur) values('connexion_DataBase_LogFile'," & Err.Number & ",'" & Date & "')"
    connexion_DataBase_LogFile = False
    Exit Function



End Function
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
euh.....

et il est sensé faire quoi ton code?
open pour ajouter OK, mais t'ajoutes rien et tu ne fermes pas le fichier....
tu n'ajoutes donc rien, et il est possible que le fichier soit bloqué.

enfin, çà serait possible si le code 75 voulait dire autre chose que : Erreur dans le chemin d'accès (erreur 75)

qqc m'échappe là
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

en fait c'est assez simple, j'ai une fonction d'ouverture de fichier et une fonction qui ferme le fichier,
si la fonction d'ouverture s'execute avec succés je commence a faire de commandes, puis à la fin j'appel la fonction qui ferme ce fichier.

comme je l'ai deja dit, tous fonctionnait parfaitement, et maintenant ils me sortent cette erreur, donc je ne pense pas que ce soit le code l'erreur mais une librairie qui manque ou qlq chose comme ça...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
si tu ouvres un fichier tu as un numéro (celui obtenu par freefile)
forcément il faudra le réutiliser, ce qui ne peut pas être le cas actuellement avec la portée de ta variable

mais de toute façon un fichier ouvert avec append, aucune raison de le fermer hors de ta fonction

désolé mais je ne comprends vraiment pas ta manoeuvre...

bref voici une manière qui me semble plus logique pour le fonctionnement de ta fonction mais toujours aussi... étrange.....

Dim iRet As Integer

Private Sub ProcAppelante()
    Forms("Formulaire Etat
avancement").Liste3.RowSource = Forms("Formulaire Etat avancement").Liste3.RowSource & ";Connexion
BDD"
    
    iRet = connexion_DataBase_LogFile

    If iRet = 0 Then 'ERREUR
        CurrentDb.Execute "INSERT INTO
TableErreurs(methode,numeroErreur,dateErreur)
values('connexion_DataBase_LogFile'," & Err.Number & ",'" & Date & "')"
    Else
        Forms("Formulaire Etat avancement").Liste3.RowSource = Forms("Formulaire
Etat avancement").Liste3.RowSource & ";Terminé"
    End If
End Sub

Public Function connexion_DataBase_LogFile() As
Integer
'   retourne le numéro d'ouverture de
fichier si réussite, sinon 0
    Dim mnLFile As Long, mslogFile As String
    mnLFile = FreeFile
    mslogFile = "C:" & Format$(Now, "DDMMYYYY-HHNNSS") & ".log"

    On Error Resume Next

    Open mslogFile For Append As #mnLFile
    connexion_DataBase_LogFile = IIf(Err.Number = 0, mnLFile, 0)
    
    Err.Clear
End Function

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

en fait je suis en stage actuellement, ça fait 3 mois que je travaille sur un projet, et durant l'execution de ce projet je dois ecrire dans un fichier log, et donc pour eviter de l'ouvrir et le refermer a chaque fois, je fait appel a la fonction de connexion, si jamais elle est reussit je commance a executer mon code (tous mon projet, et dans ce projet je commance a remplir le logfile)

et puis a la fin je doit le fermer
(j'espere que j'ai été assez clair)

j'ai essayer la methode que tu ma donner mais ça ma afficher la meme erreur... sur le open...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
le but d'append est d'ajouter au fur et à mesure.....
si tu ajoutes dans le même fichier, POURQUOI utiliser append et ne pas fermer, tu génères un nom unique (temps avec seconde) donc tu génères le nom au load et tu ouvres le fichier à chaque écriture avec un nouveau numfile, et tu refermes après, pas à la fin!

sinon si ton appli plante le fichier ne sera pas fermé et de toute façon tu vas écrire dans un fichier différent à chaque seconde...
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

le projet que je fait est un projet d'archivage, a chaque execution de mon projet en entier je doit avoir un nouveau fichier log (c'est pour ça que je les nomme avec la date et l'heur) mais pour une meme execution du projet je doit avoir un fichier tout le temps ouvert.

ecoute c'est comme pour tout logiciel avec BDD, on fait une seul connexion a la base de données et une deconnexion a la fin, et plusieur accées a cette base, c'est la meme chose pour mon fichier log.

si tu ajoutes dans le même fichier, POURQUOI utiliser append et ne pas fermer, tu génères un nom unique (temps avec seconde) donc tu génères le nom au load et tu ouvres le fichier à chaque écriture avec un nouveau numfile, et tu refermes après, pas à la fin!

justement c'est pour eviter d'ouvrire a chaque fois le fichier, ma base de données contient 67 tables, et dans chaque table on a plus que 140000 lignes et il faut un traitement sur des fichier log pour chaque traitement, si je fais des ouverture et fermeture ce serai pas top...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
alors au pire t'as qu'à garder une variable sBuffer que tu construis au fur et à mesure et tu l'enregistres à la fin si vraiment tu ne veux pas fermer à chaque enregistrement, c'est une idée

mais croire que le fonctionnement est le même pour l'écriture en .txt est une erreur, çà ne marche pas pareil

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Es-tu bien certain que ton fichier est bel et fermé lorsque tu quittes ton programme ?
L'erreur concernant, entre autres, l'ouverture de fichiers en lecture seule me porte à croire qu'il est toujours ouvert et n'a pas été fermé... mais je peux me tromper.
Peut-être en voyant le code de fermeture pourrait aider à mieux y voir (?)

Et déclare ta variable As Integer pour le FreeFile. Ça ne peut pas être un Long.

MPi
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Salut,

Je vais peut être dire une connerie mais au vu du code et selon l'erreur 75 ... Ca doit correspondre a une erreur sur un acces à une fichier ou un chemin .. soit que le chemin d'acces n'est pas valide soit que l'on a pas les droits d'accès au fichier ou qu'il est en lecture seul.

De plus si le code marchait avant ca doit pas être bien difficile . Il faut que tu vérifie ce qui est initialisé dans msLogFile ...

regrader que la chaine de caratères est correcte que ca corresponde à un nom de fichier valide , un répertoire existant .

Si c'est le cas vérifier les droits sur le fichier destination ...

Soit les droits on changé ... utilisation d'un autre utilisateur modif par un admin des droits etc .... Soit le chemin n'est plus valide ... modif du format de sortie de Date et Time suite à une bidouille dans les paramètres régionnaux enfin un truc de ce genre ..

voila ..
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

@6078 MPi oui il est fermé, crée rempli et fermé, enfin c'etait avant que je reçoii cette erreur...

@=113742 cuq avec append je creais le fichier moi meme et puis je commence a le remplir, et le chemin d'accé est tout simplement C:\  donc C:\MonFichier.log, j'ai tout les droits sur C:

@401740 PCPT meme pour un fichier texte ca me sors la meme erreur... c'est toujour l'ouverture qui cause probleme...

est ce qu'il y a une autre facon pour creer un fichier log afin de le remplir ?

    Dim mnLFile As Integer
    Dim mslogFile As String
    
    mslogFile = "C:\MonFichier.log"
    mnLFile = FreeFile
    Open mslogFile For Append As #mnLFile

    Print #mnLFile, "toto tata titi tomtom"

    Close #mnLFile
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut et bonsoir à tous,

moudz84 >> Je viens juste d'essayer ton code, et il n'y a aucun problème au niveau du open, il ouvre bien le fichier et écrit bien : toto tata titi tomtom

N'as-tu pas ailleurs dans ton code, une procédure qui ouvre déjà ton fichier ?

Car en faisant le teste justement avec deux boutons, dont un ferme le fichier à la fin et l'autre bouttons non...ben là ça plante....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Oui sauf que c'est pas C:\MonFichier.log mais un truc du genre c:\19092007-152914.log ... Donc au risque de me répéter vu que tu utilise date et time dépendant de paramètre régionaux que donne la variable ... mslogfile ...  ensuite on verra ..

A+
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Heu .. j'ai peut être été rapide dans la réponse ...

Forget mon post  si tu as testé avec ton code :

    Dim mnLFile As Integer
    Dim mslogFile As String
    
    mslogFile = "C:\MonFichier.log"
    mnLFile = FreeFile
    Open mslogFile For Append As #mnLFile

    Print #mnLFile, "toto tata titi tomtom"

    Close #mnLFile
Messages postés
64
Date d'inscription
mardi 5 septembre 2006
Statut
Membre
Dernière intervention
27 septembre 2007

@17710 Exploreur & =113742 cuq: c'est justement ça qui me rend fou.... ça marchait parfaitement chez moi aussi (avec et sans le temps), meme si j'utilise jute le code qui est au dessus ca ne marche plus (avec et sans le temps encor une fois)....

est ce que vous pouvez me dire ce qui est coché dans Outils--> référence et me dire ce qui est coché ??

je suis sur que c'est pas un probleme de code mais un truc du genre librairie ou qlq chose comme ca
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
à tout hasard....
tu n'as pas créé une fonction perso FreeFile?
(dans le doute)

VBA par défaut, mes ref sont :

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp