Timer

felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006 - 7 août 2006 à 22:53
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007 - 10 août 2006 à 08:37
Voici mon code grace auquel le résultat du nombre de lettres contenues dans le fichier indiqué s'affiche d'un seul coup dans la zone liste. Je voudrais que le résultat s'affiche au fur et à mesure du traitement du fichier, et voir les chiffres évoluer.
Je pense à la fonction timer mais je ne sais où la placer dans mon code.
Pouvez-vous m'aider?

Function Compter(ByVal Fichier As String, ByVal Text As String) As Integer
Dim m As String
Dim Cpt As Integer
Dim n As Integer
Dim x As Integer


Cpt = 0
n = FreeFile
Open Fichier For Input As #n
Do While Not EOF(n)
Line Input #n, m
x = InStr(m, Text)
Do While Not x = 0
Cpt = Cpt + 1
x = InStr(x + 1, m, Text)


Loop
Loop
Close n
Compter = Cpt
End Function
Private Sub Traiter1_Click()
Dim Source As Integer
Dim i As Integer
Dim Ch As String




Source = FreeFile
Ch = Text1.Text
Open Ch For Input As #Source
For i = Asc("a") To Asc("z")
List1.AddItem "   " & Chr$(i) & vbTab & Compter(Text1.Text, Chr$(i))
Next i
Close #Source
End Sub

10 réponses

sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
8 août 2006 à 08:02
Salut! Tu peux mettre la foction de Mortalino que tu trouves ici.


Tu l'appelles juste après ta ligne: "Do While Not EOF(n)"

A+

Sifflet
0
felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006
8 août 2006 à 11:57
J'ai essayé mais mon vb6 ne prend pas en compte tickcount (environment.tickcont). J'ai fais une recherche dans l'aide de mon vb et il n'existe pas pour lui.
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
8 août 2006 à 14:02
Tu as visual basic ou tu fais depuis une application genre Excel ou Access (=> VBA)


Pour access, dans les proritiés de la form tu as timer interval, mets ce que tu veux exemple 200 pour 200 ms = 0.2sec


Et après dans les Evenements tu dois avoir "on timer" tu clique sur les
"..." et tu choisi le générateur de code et tu obtiens un truc du genre:

Private Sub Form_Timer()

End Sub


Après à toi de mettre ce que tu veux dedans. Tu peux éventuellement
déclarer une variable globale que t'incrémente à chaque passage dans la
procedure Form_Timer() et tu fais un case:

'Variable globale en dehors (à mettre tout en haut)

Dim intTemp as Integer


Private Sub Form_Timer()

    intTemp = intTemp + 1

    Select Case intTemp

       Case 1:

          <ton 1er code>

       Case 2:

          <la suite>

       Case ...


       Case Else

          intTemp = 0

    End Select
End Sub


Le autres corrigez-moi si c'est faux, je ne suis pas sûr à 100%

A+ Sifflet
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
8 août 2006 à 14:04
Pardon, je voulais dire les "propriétés de la form" à la ligne 2
0

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

Posez votre question
felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006
8 août 2006 à 19:03
Désolée, mais c'est quoi un case?
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
9 août 2006 à 07:39
Salut!

Tu presses F1  (= L'aide) sur select ou case et tu auras la réponse !


Partout où tu as un champ que tu sais pas à quoi il sert, clique dedans
et presse F1 et ta lanterne sera éclairée ! Je te remets le même code
que ci dessus, mais fait avec des IF, si tu préfères:

'Variable globale en dehors (à mettre tout en haut)
Dim intTemp as Integer

Private Sub Form_Timer()
    intTemp = intTemp + 1
    If (intTemp = 1) Then
          <ton 1er code>
    ElseIf (intTemp = 2) Then
          <la suite>

    ...

    ElseIf (intTemp = ...) Then
          <la fin>
    Else

        intTemp = 0
    End If
End Sub


Si tu veux un conseil, étudie le tutorial ici, tu vas beaucoup apprendre

Salut A+

Sifflet
0
felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006
9 août 2006 à 12:04
Désolée de te déranger à nouveau mais quel genre de code je dois mettre, j'ai essayé en y mettant ma fonction compter mais ça ne fait rien.


Je patauge sérieusement.
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
9 août 2006 à 13:11
Colle-ton code ici, donne plus de détails, explique ce que tu veux exactement, mais là c'est pas assez clair !
0
felina1 Messages postés 15 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 24 septembre 2006
9 août 2006 à 13:21
Voici mon code:


Option Explicit


Private Sub Text1_Change()
If Text1.Text = " " Then
Traiter1.Enabled = False
Else
Traiter1.Enabled = True
If Text1.Text = " " Then
Traiter2.Enabled = False
Else
Traiter2.Enabled = True
End If
End If
End Sub
Function Compter(ByVal Fichier As String, ByVal Text As String) As Integer
Dim m As String
Dim Cpt As Integer
Dim n As Integer
Dim x As Integer


Cpt = 0
n = FreeFile
Open Fichier For Input As #n
Do While Not EOF(n)
Line Input #n, m
x = InStr(m, Text)
Do While Not x = 0


Cpt = Cpt + 1
x = InStr(x + 1, m, Text)


Loop
Loop
Close n
Compter = Cpt
End Function


Private Sub Traiter1_Click()
Dim Source As Integer
Dim i As Integer
Dim Ch As String


Source = FreeFile
Ch = Text1.Text
Open Ch For Input As #Source
For i = Asc("a") To Asc("z")
List1.AddItem "   " & Chr$(i) & vbTab & Compter(Text1.Text, Chr$(i))
Next i
Close #Source
End Sub

Cela donne ceci:
Cela affiche le nombre de lettres contenues dans le fichier indiqué. Mais je voudrais que le compteur de lettre s'actualise au fur et à mesure qu'il en trouve une.
Le top serait que je l'agrémente avec une progressbar.
Voilà, j'espère que je me suis bien expliquée.
Merci encore pour ton aide.
0
sifflet_ Messages postés 70 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 2 mai 2007
10 août 2006 à 08:37
Moi, je ne suis de loin pas un expert et j'ai pas trop de temps à réfléchir sur ton code, désolé!

Essaye de remettre un post avec ce que tu viens d'écrire (histoire qu'il se trouve au début de la page des derniers sujets)


Explique aussi le contenu de ta variable globale FreeFile

Salut A+

Sifflet
0
Rejoignez-nous