Timer

Signaler
Messages postés
15
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2006
-
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007
-
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

Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

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
Messages postés
15
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2006

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.
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

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
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Pardon, je voulais dire les "propriétés de la form" à la ligne 2
Messages postés
15
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2006

Désolée, mais c'est quoi un case?
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

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
Messages postés
15
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2006

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.
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

Colle-ton code ici, donne plus de détails, explique ce que tu veux exactement, mais là c'est pas assez clair !
Messages postés
15
Date d'inscription
mardi 24 mai 2005
Statut
Membre
Dernière intervention
24 septembre 2006

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.
Messages postés
70
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
2 mai 2007

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