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

VB 6 et antérieur Discussion :

Boucle d'action precise


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Par défaut Boucle d'action precise
    Bonsoir à tous !

    Voilà, je suis sur un nouveau logiciel (eh oui, j'ai tout le temps des problemes xD).

    Il est simple, enfaite ce que j'aimerai faire, c'est que lorsqu'on clique sur un bouton, il s'enclenche, et affiche un Msgbox une fois que tel fichier est présent dans tel dossier, je m'explique :

    J'ai, sur ma form, 2 CommandButton appellés Cmd et Cmd2.
    Cmd ===> Bouton pour démarrer l'analyse jusqu'à trouver le fichier
    Cmd2 ===> Pour stopper l'analyse.

    J'ai aussi 2 Timers.
    Ils ont le même but, rechercher un fichier à un chemin précis.

    J'ai aussi 2 modules pour les recherche de fichiers.


    Je vous presente mon code, qui sera sans doute plus explicite que tout ce blabla.

    - Dans le bouton démarrer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmd_Click()
    Timer1.Enabled = True
    End Sub
    Il enclenche donc le Timer1.


    - Dans le Timer1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Timer1_Timer()
        Dim sz As String
     
     
        sz = FichierExiste("C:\Program Files\eChanblard\Incoming\test.txt")
    End Sub
    Il recherche un certains fichier, grâce au chemin indiqué, et se sert du module1.


    - Dans le Timer2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Timer2_Timer()
        Dim i As String
     
     
        i = FichierExiste2("D:\Program Files\eChanblard\Incoming\test.txt")
    End Sub
    Il fait de même, avec le module2.


    - Dans le module 1, il y a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Function FichierExiste(ByVal Nom As String) As String
    Dim attrib As Integer
    On Error Resume Next
    attrib = GetAttr(Nom)
    If (Err <> 0) Then
    Timer2.Enabled = True
    Timer1.Enabled = False
    Else
    If ((attrib And vbDirectory) = vbDirectory) Then
     
    FichierExiste = False
     
    Else
    MsgBox "trouvé !!"
     
     
     
     
    End If
    End If
    End Function
    Il recherche le fichier, s'il ne le trouve pas, il passe au timer2, sinon il affiche un MsgBox.


    - Dans le module2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Public Function FichierExiste2(ByVal Nom As String) As String
    Dim attrib As Integer
    On Error Resume Next
    attrib = GetAttr(Nom)
    If (Err <> 0) Then
    Timer1.Enabled = True
    Timer2.Enabled = False
    Else
    If ((attrib And vbDirectory) = vbDirectory) Then
     
    FichierExiste2 = False
     
    Else
    MsgBox "trouvé"
     
     
     
     
    End If
    End If
    End Function
    Il fait la même chose, sauf que si lui ne le trouve pas, il passe au timer1.


    Donc je pense que vous avez saisi à peu pres le projet.



    Le probleme est le suivant :

    Lorsque je clique Cmd qui enclenche le timer1, tout vas bien, mais quand je vais dans le dossier specifié et que je crée un nouveau fichier nommé "test.txt", il ne me le detecte pas.

    Qu'est ce qui ne va pas dans mon code svp ?

    Je sais que ma manière est compliquée, et il existe surement plus simple en utilisant une chaine...

    Merci d'avance.
    Bonne soirée

    Pablo

  2. #2
    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
    Gné ????

    Comprends rien à ce que tu manigances ainsi ...

    Attends un peu ...
    Tu écris :
    Ils ont le même but, rechercher un fichier à un chemin précis.
    Tu connais donc le chemin (à moins que tu ne t'exprimes mal...)

    A quoi diable peuvent servir des timers dans une telle petite affaire où même l'utilisation de la fonction Dir suffirait à retourner immédiatement l'existence ou l'absence du fichier recherché...?????
    Comprends pas...
    Il va falloir que tu t'expliques calmement et simplement (trop est l'ennemi du bien, en général).

    Recommence tes explications de façon concise et claire, s'il te plait ...

    Edit( :
    Chercherais-tu à dire que tu veux contrôler périodiquement si tel ou tel autre fichier a été créé (par une autre application que la tienne) dans un répertoire spécifié ? Si oui : un seul timer suffit et la chose est fort simple ...

  3. #3
    Membre éclairé Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Par défaut
    Je sais que je me suis compliqué la vie, et que ce que je veux faire est simplissime, donc je résume :

    Je veux tout simplement, qu'avec l'aide d'un timer, celui-ci cherche tres rapidement et en boucle, si le fichier test.txt est présent dans le chemin que j'ai indiqué, et que si il le trouve, qu'il affiche un message.

    C'est juste pour faire un ptit test.

  4. #4
    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,

    Fais ce test là avec un seul bouton de commande et un seul timer (il n'en faut pas plus !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private monfic As String
     
    Private Sub Command1_Click()
      monfic = "essai.txt"
      Timer1.Enabled = True
    End Sub
     
    Private Sub Timer1_Timer()
      If Dir("C:\" & monfic) <> "" Then
        MsgBox "fichier trouvé dans  C:\"
        Timer1.Enabled = False
        Exit Sub
      ElseIf Dir("D:\" & monfic) <> "" Then
        MsgBox "fichier trouvé dans D:\"
        Timer1.Enabled = False
      End If
    End Sub
    en remplaçant bien évidemment par tes chemins à toi, hein ?

    Ceci étant dit :
    Si, au bout du compte, tu ne sais pas où se trouve, sur la machine finale, le répertoire de Program Files (et que c'est donc la raison pour laquelle tu cherches sur C puis sur D), tu devrais faire une petite recherche sur ce forum et utiliser tout bêtement la fonction Environ !!!
    Tu éviterais ainsi de faire un double test et tu irais directement chercher périodiquement (ton Timer) dans ce seul répertoire !!!!

  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
    mais je veux que quand il ne trouve pas le fichier, il se taise, et recommence la main d'oeuvre jusqu'à le trouver.
    Et ????
    C'est exactement ce qu'il fait !!!!!!!
    Tu n'as alors même pas essayé !

    Edit : Tiens ! ton message a disparu ...

    Edit :

    Regarde ce qu'affiche ceci, par( exemple :

    MsgBox Environ$("ProgramFiles")

  6. #6
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Comme quoi, un problème correctement posé est généralement à moitié résolu

  7. #7
    Membre éclairé Avatar de Ramdoulou
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 286
    Par défaut
    Oui j'avais pensé à ce code, mais je l'avais fait d'une autre manière, la syntaxe était mauvaise.

    Là ça marche.

    Merci, et désolé de vous avoir dérangé pour une chose aussi facile =)

    A bientôt

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

Discussions similaires

  1. ne pas executer de JS pour une action precise
    Par Doksuri dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 14/10/2011, 16h34
  2. Réponses: 4
    Dernier message: 12/06/2009, 10h28
  3. boucle Struts sur une action !
    Par habasque dans le forum Struts 1
    Réponses: 6
    Dernier message: 09/02/2009, 12h00
  4. Réponses: 4
    Dernier message: 15/06/2006, 10h05
  5. action en boucle sur bouton + initialiser l'appli ?
    Par Lorenzo77 dans le forum Delphi
    Réponses: 7
    Dernier message: 17/05/2006, 18h45

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