IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

s'assurer de la présence d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Par défaut s'assurer de la présence d'un fichier
    bonjour,

    j'ai un code qui imprime un fichier en PDF (via PDFCreator) dans un certain dossier (par exemple le bureau) avec le nom du classeur, puis qui le renomme avec un nom que je lui donne.
    Mon problème, c'est que cela prend un certain temps pour imprimer, et lorsque je renomme le fichier, il ne le trouve pas toujours car il est en cours d'impression.
    Pour l'instant, je lui demande d'attendre un certain temps, mais cela ne fonctionne pas pour tous les PC, cela dépend de la vitesse de travail.
    Alors ma question : est-ce qu'il y a une fonction qui permet de vérifier la présence du fichier, ou de s'assurer que l'impression soit terminée?

    J'espere avoir été assez clair

    merci d'avance

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ajoute un DoEvents sur la ligne suivant l'instruction d'impression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Blabla.printout
    DoEvents
    Ça devrait suffire. Si ce n'est pas le cas, tu dis

  3. #3
    Membre averti
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Par défaut
    non, malheureusement c'est toujours pas bon. en fait, je pense que c'est le temps qu'il enregistre.
    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
            "PDFCreator sur Ne01:", Collate:=True
     
        DoEvents
     
        OldName = "C:\" & FilePath & "\Bureau\" & FileName & ".pdf"
        NewName = "C:\" & FilePath & "\Bureau\" & My_Array(counter) & ".pdf"
     
        DoEvents
     
        Name OldName As NewName
    le message d'erreur qui apparait : Erreur d'accès Chemin\Fichier

    merci de ton aide

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu peux essayer avec une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    OldName = "C:\" & FilePath & "\Bureau\" & FileName & ".pdf"
    Do While dir(OldName) = ""
         DoEvents
    Loop
    Pas certain que le pdf n'existe pas avant même que son enregistrement ne soit terminé. Tu peux tester pour nous ?
    Sinon tu peux tester la solution décrite par SilkyRoad dans la FAQ pour vérifier si un classeur partagé est ouvert.

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    J'ignore personnellement, n'ayant jamais utilisé cette manoeuvre, si le fichier n'existe pas dès le début de sa création. Si tel était le cas, en effet, un dir conduirait à découvrir son existence alors même qu'il n'est pas encore totalement "imprimé"/écrit.

    Je me demande dans ce cas s'il ne serait pas préférable d'analyser la file d'attente du spooler, pour l'imprimante/pseudo-imprimante concernée.

    Cette liste des "travaux" en attente sur l'imprimante/peudo-imprimante concernée devrait être faite à l'aide des fonctions OpenPrinter, ClosePrinter et EnumJobs de la librairie winspool.drv de l'Api de Windows. Ensuite : liste vide = document terminé ...

    Je n'ai par ailleurs par fouillé plus loin mais me demande si l'on ne pourrait pas, également, utiliser la fonction WaitForSingleObject de la librairie Kernel32 pour examiner l'état du processus lancé et décider en fonction de cet état. La chose serait à mon avis un peu plus complexe, mais pas réellement impossible.

    Voilà donc deux pistes qui seraient indépendantes d'une "temporisation" dépendant des performances d'une machine.
    Ce ne sont là que deux pistes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier la présence d'un fichier
    Par tonyC dans le forum ASP
    Réponses: 8
    Dernier message: 13/12/2006, 13h09
  2. test présence key dans fichiers properties
    Par fanchic29 dans le forum Struts 1
    Réponses: 5
    Dernier message: 24/10/2006, 17h15
  3. script windows qui détecte la présence d'un fichier
    Par yannich dans le forum Windows
    Réponses: 1
    Dernier message: 23/08/2006, 18h24
  4. Réponses: 4
    Dernier message: 27/04/2006, 17h51
  5. Réponses: 11
    Dernier message: 02/04/2004, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo