Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1217 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [vba] extraire une date - [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[vba] extraire une date - [resolu]

n°642664
red factio​n
Posté le 14-02-2004 à 12:42:48  profilanswer
 

mystr = " xxxxx k k k wwwww 10/10/2004 dkdkdkdkdkdkkd"
 
jaimerai recuprer la date comment faire ?
 
 
jarrive a detecter si ya une date avec Like "*##/##/####*"
 
mais ca me renvoie juste true ou false
jai essaye avec Format mais ca marche pas


Message édité par red faction le 17-02-2004 à 13:06:07
mood
Publicité
Posté le 14-02-2004 à 12:42:48  profilanswer
 

n°642667
drasche
Posté le 14-02-2004 à 12:48:07  profilanswer
 

le coup du like est pas mal puisque ça te permet de savoir rapidement si il y a un truc qui ressemble à une date dans ta chaîne sans devoir passer par un algo un peu pénible. Mais en fait tu n'y échappes pas parce qu'il n'y a pas d'équivalent pour extraire la chaine (sauf peut être avec des regexp mais ça sort du cadre de mes compétences).
 
Donc il va falloir que tu y ailles à coup de InStr et Mid [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°642672
red factio​n
Posté le 14-02-2004 à 12:55:13  profilanswer
 

like aurait pu renvoyer la pos au moins  :fou:

n°642708
red factio​n
Posté le 14-02-2004 à 14:05:58  profilanswer
 

le prob c que je peut avoir des caracteres '/' avant et apres la date  :sweat:

n°642711
drasche
Posté le 14-02-2004 à 14:07:15  profilanswer
 

oui :/
peut être les regexp alors [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°642733
red factio​n
Posté le 14-02-2004 à 14:48:12  profilanswer
 

Code :
  1. Dim regex As RegExp
  2. Dim s As String
  3.  
  4. s = " 15 1 5fghfgghgf1  51 51 5 02/02/2003 1    gggg"
  5.  
  6. Set regex = New RegExp
  7. regex.Global = True
  8. regex.Pattern = "?????"
  9. MsgBox regex.Replace(s, "" )


 
manque plus que le pattern qq peut maider ?


Message édité par red faction le 14-02-2004 à 15:16:50
n°642833
red factio​n
Posté le 14-02-2004 à 18:13:45  profilanswer
 

[:yoyoz]

n°645167
itawa
Posté le 17-02-2004 à 12:26:04  profilanswer
 

Bonjour,
Et si tu fais une recherche avec des left and right, des instr, et hop le tour est joue.
Faut juste esperer que les formats de datre sont identiques : xx/xx/xxxx (2 digit, slash, 2 digit, slash, 4 digit) et qu'il n'y a pas d'autre slash dans ta string.
 
genre:
 
Dim s As String
s = " 15 1 5fghfgghgf1  51 51 5 02/02/2003 1    gggg"
s = Right(s, Len(s) - InStr(1, s, "/" ) + 4)
s = Left(s, 11)
MsgBox s
 
et la ca ne sort que 02/02/2003, quelques que soit le nombre de caractere avant ou apres.
 
I.

n°645239
red factio​n
Posté le 17-02-2004 à 13:07:21  profilanswer
 

ok sinon jai trouve ceci comme pattern qui marche tres bien
 

Code :
  1. \d\d/\d\d/\d\d\d\d


n°2078628
dacid
Posté le 27-05-2011 à 11:39:22  profilanswer
 

Je viens de faire cette fonction qui ...fonctionne très bien.
 

Code :
  1. Function extraireDateDeChaine(str As String) As String
  2. Dim posi, i As Integer
  3. Dim ret, cChar, charOk As String
  4. ret = ""
  5. charOk = "0123456789/"
  6. posi = InStr(str, "/" )
  7. If (posi > 0) Then
  8.     For i = posi - 1 To 0 Step -1 ' Récupérer le début de la date
  9.         If (posi < 2) Then ' On traite ici les / en début de chaine pour qu'il passe dans la récursivité
  10.             Exit For
  11.         End If
  12.         If (Not IsNumeric(Mid(str, i, 1))) Then
  13.             posi = i + 1
  14.             Exit For
  15.         End If
  16.     Next
  17.     For i = posi To Len(str)
  18.         cChar = Mid(str, i, 1)
  19.         If (InStr(charOk, cChar)) Then
  20.           ret = ret & cChar
  21.         Else
  22.             Exit For
  23.         End If
  24.     Next
  25.     'ret = Right(s, Len(s) - InStr(1, s, "/" ) + 4)
  26.     'ret = Left(ret, 11)
  27. End If
  28. If ((ret <> "" ) And (Len(ret) < 6)) Then ' C'était un slash en dehors du contexte d'une date, l'oter et relancer la recherche
  29.     ret = extraireDateDeChaine(Left(str, posi - 1) & Right(str, Len(str) - posi))
  30. End If
  31. extraireDateDeChaine = ret
  32. End Function


Message édité par dacid le 27-05-2011 à 11:52:53
mood
Publicité
Posté le 27-05-2011 à 11:39:22  profilanswer
 

n°2078630
kiki29
Posté le 27-05-2011 à 11:53:00  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [vba] extraire une date - [resolu]

 

Sujets relatifs
Gestion des sessions: Changer une valeur.[RESOLU][resolu] redirection automatique apres un laps de temps
Probleme de date sur Accessconversion date
[ECLIPSE] Passer en debug dans un programme [RESOLU][Résolu] ASP-Cookie
declaration de thread en global et threadstart [résolu][CSS] Imbrication de structures [Résolu]
[ORACLE FORMS] validité d'une variable globale ? [Résolu][PHP] [MYSQL] requête sur partie de la date?
Plus de sujets relatifs à : [vba] extraire une date - [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR