Pb readline

cs_cecell Messages postés 20 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 30 mars 2005 - 28 juin 2004 à 11:23
cs_cecell Messages postés 20 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 30 mars 2005 - 28 juin 2004 à 15:36
bonjour je suis en stage et j'ai créer un programme qui me permet d'insérer des données dans un fichier texte
ex:
25/06/2004 ; PROD\cpicouays ; 00:17
25/06/2004 ; PROD\cpicouays ; 03:03
25/06/2004 ; PROD\cpicouays ; 04:54

je voudrai créer un boucle me permettant de lire ses données et de les additionné si la date et le nom d'utilisateur son les même
ce qui donnerai
25/06/2004 ; PROD\cpicouays ; 08:14

mais je n'arrive pas à le faire
je sais lire dans un fichier texte mais je ne sais pas comparer les lignes d'un fichier texte

merci pour ceux qui m'aiderons

5 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
28 juin 2004 à 12:24
si tu as un nombre assez limité de personne ( pas une centaine ) et que l'historique ne t'interrese pas utilise plutot un fichier de type INI avec comme structure :

[Nom1]
Date=
TotalHeure=

[Nom2]
Date=
TotalHeure=
....

Ex :

[PROD\cpicouays]
Date=25/06/2004
TotalHeure=08:14

Ce sera beaucoup plus simple et plus léger..regardes dans les source comment lire et ecrire dans les INI..

It@li@
0
cs_cecell Messages postés 20 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 30 mars 2005
28 juin 2004 à 13:47
le pb est que je n'ai pas le choix du type de fichier
je dois obligatoirement utiliser un fichier .csv
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
28 juin 2004 à 14:52
Ok alors une des solution est d'exporter ton fichier csv dans un controle ListBox

Ensuite de creer une Fonction avec comme parametres d'entrée la Date et le Nom

Public Function Somme(ByVal DateChoix As String, ByVal NomChoix As String) As Integer

Dim Minute As Integer
Dim Seconde As Integer

Minute = 0
Seconde = 0

For i = 0 To List1.ListCount - 1
Pos1 = InStr(1, List1.List(i), ";")
Pos2 = InStr(Pos1 + 1, List1.List(i), ";")
LaDate = Mid(List1.List(i), 1, 10)
LeNom = Mid(List1.List(i), Pos1 + 2, (Pos2 - Pos1) - 3) If LaDate "03/06/2004" And LeNom "TOTO" Then
Pos3 = InStr(Pos2 + 1, List1.List(i), ":")
Minute = Minute + Mid(List1.List(i), Pos3 - 2, 2)
Seconde = Seconde + Mid(List1.List(i), Pos3 + 1, 2)
End If
Next

Somme = (60 * Minute) + Seconde

End Function

la somme renvoyer est en seconde il te restera plus qua convertir ...la fonction tu l'appel comme suis :

valeur = Somme("25/06/2004", "PROD\cpicouays")

It@li@
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
28 juin 2004 à 15:16
G fais une erreu voici le code avec la partie Conversion...change juste les filtre TOTO et ma Date par les tiens

Private Sub Form_Load()

Label1.Caption = Conversion(Somme("03/06/2004", "TOTO"))

End Sub

Public Function Somme(ByVal DateChoix As String, ByVal NomChoix As String) As Integer

Dim Minute As Integer
Dim Seconde As Integer

Minute = 0
Seconde = 0

For i = 0 To List1.ListCount - 1
Pos1 = InStr(1, List1.List(i), ";")
Pos2 = InStr(Pos1 + 1, List1.List(i), ";")
LaDate = Mid(List1.List(i), 1, 10)
LeNom = Mid(List1.List(i), Pos1 + 2, (Pos2 - Pos1) - 3) If LaDate DateChoix And LeNom NomChoix Then
Pos3 = InStr(Pos2 + 1, List1.List(i), ":")
Minute = Minute + Mid(List1.List(i), Pos3 - 2, 2)
Seconde = Seconde + Mid(List1.List(i), Pos3 + 1, 2)
End If
Next

Somme = (60 * Minute) + Seconde

End Function

Public Function Conversion(ValeurSeconde As Integer) As String

Min = ValeurSeconde \ 60
Sec = (ValeurSeconde - (Min * 60))

Conversion = Min & ":" & Sec

End Function
It@li@
0

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

Posez votre question
cs_cecell Messages postés 20 Date d'inscription lundi 28 juin 2004 Statut Membre Dernière intervention 30 mars 2005
28 juin 2004 à 15:36
est ce que ta fonction va marcher en vbscript car je travaille dessus
0