PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 24 févr. 2007 à 21:28
salut,
Private Sub FormatTimeStrings(ByRef Expression As String)
Dim lPosL As Long, lPosR As Long, sBuffer As String, bVal As Boolean
lPosL = 0
Do
lPosL = InStr(lPosL + 1, Expression, ">")
lPosR = InStr(lPosL + 1, Expression, "<")
If lPosL > 0 And lPosR > 0 Then
sBuffer = Mid$(Expression, lPosL + 1, lPosR - lPosL - 1)
bVal = False
Select Case Len(sBuffer) Case 2: If IsNumeric(sBuffer) Then bVal True: sBuffer "00:00:" & sBuffer
Case 4: If sBuffer Like "?:??" Then bVal = True: sBuffer = "00:0" & sBuffer
Case 5: If sBuffer Like "??:??" Then bVal = True: sBuffer = "00:" & sBuffer
Case 7: If sBuffer Like "?:??:??" Then bVal = True: sBuffer = "0" & sBuffer
End Select
If bVal Then Expression = Left$(Expression, lPosL) & sBuffer
& Mid$(Expression,
lPosR)
End If
Loop Until (lPosL = 0 Or lPosR = 0)
End Sub
je te prépare le test avec les enregistrement (voir 2 3 topics plus bas)
merci d'éviter les doublons au possible par la suite
++
PCPT [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
VBGenesis
Messages postés292Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention22 février 2009 24 févr. 2007 à 20:15
Salut
Quand tu dis qu'une chaine est ">Entier:Entier<" tu veux dire qu'il y a vraiment marqué "Entier" ou qu'il s'agit d'un nombre entier?
Si c'est un nombre, ce cera plus dure mais sinon c'est relativement facile
@+
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 24 févr. 2007 à 20:41
Tiens !
Je suis fatigué et ai bâclé... mais ceci marche (fais tes essais en modifiant toto comme tu l'entends)
Private Sub Command1_Click()
toto = ">25:47<"""
toto = Left(Mid(toto, (InStr(toto, ">")) + 1), (InStr(toto, "<")) - 2)
A = Len(toto)
Select Case Len(toto)
Case Is = 5
toto = "00:" & toto
Case Is = 6
toto = "00" & toto
Case Is = 7
toto = "0" & toto
Case Else
toto = toto
End Select
MsgBox toto
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 24 févr. 2007 à 20:48
Ah le coquin !
Il en a rajouté, des conditions, pendant que je rédigeais !!!
Bon !
alors voilà la totale , pour tous les cas de figure, ma foi :
Private Sub Command1_Click()
toto = "><"""
toto = Left(Mid(toto, (InStr(toto, ">")) + 1), (InStr(toto, "<")) - 2)
Select Case Len(toto)
Case Is = 0
toto = "00:00:00" & toto
Case Is = 1
toto = "00:00:0" & toto
Case Is = 2
toto = "00:00:" & toto
Case Is = 3
toto = "00:00" & toto
Case Is = 4
toto = "00:0" & toto
Case Is = 5
toto = "00:" & toto
Case Is = 6
toto = "00" & toto
Case Is = 7
toto = "0" & toto
Case Else
toto = toto
End Select
MsgBox toto
End Sub
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 24 févr. 2007 à 21:07
Tiens, encore !
Je n'ai pas VB6 (et donc le replace pour vérifier), mais ceci devrait aller, il me semble :
Private Sub Command1_Click()
toto = ">21:01:05<"
toto = Left(Mid(toto, (InStr(toto, ">")) + 1), (InStr(toto, "<")) - 2)
toto = Format(replace(toto, ":", ""), "00:00:##")
MsgBox toto
End Sub
VBGenesis
Messages postés292Date d'inscriptionsamedi 25 février 2006StatutMembreDernière intervention22 février 2009 24 févr. 2007 à 21:16
Salut jmfmarques! Ton code est bien, mais tu oublie qu'il peut y avoir plusieurs dates! cepandant le mien ne gérait pas la longueur variable des chaines, c'est pourquoi je me suis permit de prendre une partie de ton code (merci!!):
Dim Debut as integer, temp as integer
While instr(Debut, ContFile, ">") > 0
Debut = instr(Debut, ContFile, ">")
Select Case Len(mid(ContFile, debut + 1, instr(debut, Contfile, "<")))
Case Is = 0
temp = "00:00:00"
Case Is = 1
temp = "00:00:0"
Case Is = 2
temp = "00:00:"
Case Is = 3
temp = "00:00"
Case Is = 4
temp = "00:0"
Case Is = 5
temp = "00:"
Case Is = 6
temp = "00"
Case Is = 7
temp = "0"
Case Else
temp = temp
End Select
' = "--------->" & "00:" & "05:47<------------"
Contfile = left(ContFile, Debut + 1) & temp & mid(Contfile, Debut + 1, len(Contfile) - Debut - 1)
Wend
Comme ça ça devrait marcher, même si je ne peut pas tester tout de suite (faut croire que vb n'a pas aimé mon reformatage...) J'espere que mon code sera utile
@+
VBGenesis
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 24 févr. 2007 à 21:20
coucou !
Mon 1er code se fichait (il gérait tout) de la longueur des dates.
Le 2ème (a vérifier et corriger un peu au besoin car je n'ai pas VB6) est encore mieux
Essaye !
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 24 févr. 2007 à 21:25
Salut C_G_Mila,
Je viens de lire ton MP, et la réponse que je peux te donner, c'est que Jmfmarques as bien répondu à ton problème avec son code (post 20:48 et 21:07).
Maintenant, je pense que n'as plus cas utiliser son code, et insèrai le tient.
1 - Tu lis donc ton fichier texte...si le format de lecture est bon, tu ne fias rien et passe à la ligne suivante, si c'est le cas contraire, tu récupère le n° de ligne et ré-écrit sur le même n° de ligne avec le bon format.