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 :

If Exist [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut If Exist
    Bonjour,

    Le programme appelé par ma macro est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Shell "C:\OYAK\FUSION\OYAK_v2\OYAK_v2_run.bat", 0
     
    Application.Wait Time + TimeSerial(0, 0, 120)
     
    Workbooks.Open "C:\OYAK\MEMO.xls"
    Le batch Oyak_v2_run génère un fichier Excel temporaire lors de son exécution et lorsqu'il a terminé il génère un fichier MEMO.xls.
    Nous souhaitons remplacer le wait par une fonction If exist pour que le reste de la macro ne s'exécute pas avant que le fichier soit totalement généré.

    Savez-vous comment faire svp ?

    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    do :doevents:loop while  dir "C:\OYAK\MEMO.xls"=""
    cette boucle ne s'arrêtera pas avant d'avoir une valeur dans dir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Merci pour vos réponses.
    Lorsque je met ce bout de code dans ma macro, j'ai ce message d'erreur:

    Nom : Sans titre.png
Affichages : 1388
Taille : 254,5 Ko

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu as placé le code dans la partie code d'une feuille! Il faut le placer dans un module standard.
    Menu->insérer ->module!

    Ou élever la notion de public!

  6. #6
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Je l'ai effectivement placé dans une feuille car je souhaite que lorsqu'un utilisateur clique sur un bouton il puisse exécuter la macro.
    Si j'insère le code dans un module standard, il ne reconnait pas ShellAndWait:

    Nom : Sans titre.png
Affichages : 1366
Taille : 181,3 Ko

    J'ai essayé de remplacer la notion de public par private mais j'ai le meme message d'erreur:

    Nom : Sans titre2.png
Affichages : 1318
Taille : 206,3 Ko

  7. #7
    Invité
    Invité(e)
    Par défaut
    A la place de public tu laisses a vide (rien)

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    same same

    Nom : Sans titre.png
Affichages : 1339
Taille : 190,1 Ko

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ton code debait déjà avoir ce souci
    tua demander comment remplacer la fonction "Wait" par le test de l'existence du fichier
    je site ton exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Shell "C:\OYAK\FUSION\OYAK_v2\OYAK_v2_run.bat", 0
     
     Application.Wait Time + TimeSerial(0, 0, 120)
     
     Workbooks.Open "C:\OYAK\MEMO.xls"
    si tu remplace cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Wait Time + TimeSerial(0, 0, 120)
    par ma ligne (do:loop)tu devrait normalement pas avoir de problème tes soucis étaient déjà la avant
    d'ailleur si je regarde tes captures d'ecran tu te sert des api pour capter l'ouverture ou la fin du processus
    si c'est pour le bat tu en a vraiment pas besoins
    si le bat génère le fichier que tu teste dans la boucle( do:loop) ou (application.Wait.....)la boucle do loop fait exactement le boulot demandé
    si c'est rien on boucle :si c'est "c:/....bklablabla....) alors faire cela
    non dans ce cadre tu n'a pas besoins des apis vraiment
    le bat s'arretant tout seul en ayant fini sauf si une fonction timer est utiliser dans ce bat au quel cas c'est inutile tu la déjà dans le classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Application.OnTime TimeValue("08:01:00"), "mamacro"
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub mamacro()
    Shell "C:\OYAK\FUSION\OYAK_v2\OYAK_v2_run.bat", 0
    Application.Wait Time + TimeSerial(0, 0, 120)
     'ou bien 
     'do:doevents:loop while dir "C:\OYAK\MEMO.xls"=""
     
    Workbooks.Open "C:\OYAK\MEMO.xls"
    end sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Il m'affiche une erreur de compilation quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Shell "C:\OYAK\FUSION\OYAK_v2\OYAK_v2_run.bat", 0
    Do:DoEvents: Loop while Dir "C:\OYAK\MEMO.xls" = ""
     
    Workbooks.Open "C:\OYAK\MEMO.xls"
    Application.WindowState = xlMinimized

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    mille excuses j'avais recopié ton exemple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Oui c'est ce que j'ai écris

  13. #13
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Nom : Sans titre.png
Affichages : 1283
Taille : 188,2 Ko

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Bonjour !

    Patrick, je pense à un problème de référence car la ligne reste en minuscules !

    Lors de la validation d'une ligne de code, les premières lettres des instructions
    reconnues sont automatiquement converties en majuscules …

    Sinon tenter une seule instruction par ligne, sait-on jamais …
    Quid de la version non indiquée dans le titre de cette discussion !

    __________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Test fait:

    Nom : Sans titre.png
Affichages : 1268
Taille : 206,7 Ko

  16. #16
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonjour,

    il manque des parenthèses pour ton Dir("Monfichier.xls")et pour transformer du code illisible, écrit sur une seule ligne il faut remplacer seulement les ":" par des retour chariot ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    do 
       doevents
    loop while  dir ("C:\OYAK\MEMO.xls")=""

  17. #17
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    And the winner is … Patrick !

    Dire que je suis aussi passé à travers tellement c'est évident …

    Bien vu bbil !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    MarcL est content y me met la rouste

    aie!aie!

    oui bon ben ......le principe étant compris c'est l'essentiel
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Nouveau membre du Club
    Inscrit en
    Octobre 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 71
    Points : 37
    Points
    37
    Par défaut
    Merci ça compile bien maintenant
    Merci pour votre aide
    Bonne journée

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

Discussions similaires

  1. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Existe-t'il un type tenant sur 2 octets ?
    Par benj63 dans le forum C++Builder
    Réponses: 13
    Dernier message: 20/06/2002, 17h03
  4. Existe t'il un composant permettant de jouer un son wav?
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 20/06/2002, 14h10
  5. Existe-t-il un langage de prog "virtuel" en Français
    Par HRS dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 10/06/2002, 18h11

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