Probleme de refresh, existence d'un fichier crée

cs_Prince Ali Messages postés 4 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 2 mai 2006 - 13 avril 2006 à 14:30
cs_Prince Ali Messages postés 4 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 2 mai 2006 - 2 mai 2006 à 21:45
Bonjour à tous.
J'utilise un programme qui créer un fichier dans un répertoire temp pour qui le déplace vers un autre repertoire de destination.


Voilà le code :

pathDestination = "cheminFichierDestionation.pdf"
'calcul du chemin fichier dans le repertoire temporaire
PDFFile = SetPDFPrinter & "rpt_Breakdowns.pdf"
If Not fs.FileExists(pathDestination ) Then
si le fichier n'existe pas dans le repertoire temporaire
If Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf")) Then
'on attend jusqu'à ce que le le fichier soit trouvé
While Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf"))
Wend
DoCmd.Close acReport, "rpt_Breakdowns", acSaveNo
Name PDFFile As path
End If
End If



' voilà la fonction qui me permet de créer mon fichier dans le répertoire temporaire
Public Function PdfCreated(MyFile As String, Longu As Long) As Boolean
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
.LookIn = fs.GetParentFolderName(fs.getabsolutepathname(MyFile))
.SearchSubFolders = True
.fileName = fs.GetFileName(MyFile)
If .Execute() > 0 Then
PdfCreated = True
Else
PdfCreated = False
End If
End With
End Function

Lorsque mon programme sort la boucle "While Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf")), il plante en disant que le fichier n'existe pas, alors q'il vient de sortir ce cette boucle qui verifie justement l'existance de ce fichier.

Par contre, lorsque je fais tourner ce programme en mode debug, il ne plante pas. Cela se passe comme si il n'avait pas le temps de verifier l'existence du fichier en question lorque je l'exécute normalement (sans debug). J'ai l'impression que l'orsque je l'exécute en debug, puisque c'est manuel, ça prend du temps et donc "il a le temps de voir que ce fichier existe.
Je pense que c'est peutetre un souci de refresh dans l'explorer...
Si quelqu'un pouvait m'aider, ce serait vraiment bien.
Merci par avance.

6 réponses

NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
13 avril 2006 à 17:51
Bonjour

Not fs.FileExists(pathDestination )
est true si pathDestination n'existe pas, y a pas un pb là ?

Il me semble que le paramètre Longu As Long n'est pas utilisé.

Met des ByVal quand tu passe des valeurs qui ne seront pas modifiées.

While Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf"))
Wend

préfère une boucle du genre :

do until PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf"))
DoEvents()
Sleep(10) 'Voir les messages sur le forum à propos de Sleep
loop

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
cs_Prince Ali Messages postés 4 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 2 mai 2006
19 avril 2006 à 09:42
Merci Henry ,

Not fs.FileExists(pathDestination )
est true si le fichier n'existe pas encore, y a pas de pb à ce niveau là.

En fait, pour etre plus précis, la première utilisation de PdfCreated (dans If Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf")) ) me renvoi "vrai" alors que le fichier pdf en question n'EXISTE PAS (j'ai bien verifié dans le bon répertoire). Alors je le force à "faux" à la main pour pouvoir exécuter la suite du programme.
A l'opposé, si le fichier existe, le résultat du pemier appel de la fonction est "faux", il ne le voit pas.

Par contre, quand je change d'ordinateur, ça fonctionne normalement.


Si quelqu'un y comprend quelque chose...

Merci déjà.
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
19 avril 2006 à 14:34
Bonjour


Pour améliorer cette partie du code :

If Not PdfCreated(PDFFile, Len("rpt_Breakdowns.pdf"))

Tu peux virer le 2ième paramètre celuici n'étant pas utilisé.



Sinon, filesystemobject je ne connais pas à fond.



étant actuellement (pendant les vacances) sur une connexion limité en
temps, je ne peux pas répondre mieux. Je conserve le lien pour la
rentrée.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
cs_Prince Ali Messages postés 4 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 2 mai 2006
24 avril 2006 à 11:39
Bonjour Henry,

Merci pour tes réponses.
Le problème est resté le même, à savoir que le code ne marche pas sur un pc et quand je change d'ordinateur, ça fonctionne.

C'est peutetre dû à la configuration du systême mais là s'arretent mes compétances.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
2 mai 2006 à 08:29
Bonjour

Regarde si ce n'est pas le scripting qui est altérer par exemple. Car si ton code ne marche pas uniquement sur une machine, c'est peut-être un problème de fichiers système.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
cs_Prince Ali Messages postés 4 Date d'inscription lundi 10 avril 2006 Statut Membre Dernière intervention 2 mai 2006
2 mai 2006 à 21:45
Salut.

En fait, j'ai résolu le problème; j'ai honte de le dire, mais en faite le fichier existait bel est bien, mais il etait dans un sous repertoir! ( à cause de "SearchSubFolders = True
" dans PdfCreated() ).

En tous cas, tes conseils n'ont pas été vains, ils m'on appris des choses : l'histoire du 2eme paramètre dans PdfCreated(), le " ByVal " pour le paramètre aussi non modifié et le changeent du while en loop avec un sleep().

Merci du temps consacré, c'est sympa.
0
Rejoignez-nous