Connaitre la position de départ de fin d'une chaine dans une autre ??? :-s

youkizouki Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 12 octobre 2005 - 15 avril 2005 à 10:27
youkizouki Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 12 octobre 2005 - 15 avril 2005 à 16:56
bonjour à tous,

je possède 2 renseignements :
1°) une chaine représentant en réalité une date (maChaine = "20050415")
2°) une deuxième chaine qui spécifie sous quel fomat se présente la première
(format="YYYYMMDD")

Je souhaiterais convertir cette chaine en une date valide. Le problème est que cette chaine ne représente pas un format date reconnus par visualBasic et qu'il est donc impossible d'utiliser directement le fonction CDate("20050415").

- je pense donc spliter cette première chaine de manière à récupérer séparément je jour,le mois et l'année:

j=15
m=04
a=2005

- et ensuite la convertir grace à CDate en faisant :

* CDate(j & "-" & m & "-" & a)
(ceci marche a condition de connaitre dans quel ordre passez j,m,a mais pour cela j'ai ma petite idée...)

MON PROBLEME EST COMMENT REUSSIR A SPLITER MA PREMIERE CHAINE SUR BASE DE LA DEUXIEME????
exemple:
* pour le jour, le caractere 'D' se trouve en 7 et 8 eme position, je devrais donc extraire le 7 et le 8eme caractere de maChaine (15) et les stocker dans ma variable j

* pour le mois, le caractère 'M' se trouve en 5 et 6eme position, je devrais donc extraire le 5 et 6 eme caractere de maChaine (04) et les stocker dans ma variable m etc...

connaissez vous un moyen simple de faire cela?
une methode permettant de connaitre le position de début et de fin d'une chaine à l'intérieur d'une autre chaine?

merci d'avance pour votre attention, et à tres bientot j'espere

cordialement,

mika

4 réponses

zippro4012 Messages postés 216 Date d'inscription mardi 15 juin 2004 Statut Membre Dernière intervention 26 février 2006 1
15 avril 2005 à 10:39
La fonction Instr
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
15 avril 2005 à 13:56
Private Type ElementFormat

start As Long

length As Long

End Type



Private Sub Command1_Click()

ExtractData "20050415", "YYYYMMJJ"

ExtractData "2005Avril15", "YYYYMMMMMJJ"

End Sub



Private Sub ExtractData(sDonnee As String, sFormat As String)

Dim tablo(10) As ElementFormat

Dim indice As Long

Dim sCurrent As String



indice = 0

sCurrent = Mid$(sFormat, 1, 1)

tablo(indice).start = 1

For i = 2 To Len(sFormat)

If Mid$(sFormat, i, 1) <> sCurrent Then

sCurrent = Mid$(sFormat, i, 1)

'ReDim Preserve tablo(indice + 1)

tablo(indice).length = i - tablo(indice).start

indice = indice + 1

tablo(indice).start = i

End If

Next i

tablo(indice).length = Len(sFormat) - tablo(indice).start + 1

' Exemple :

' sFormat = "YYYYMMJJ"

' tablo contient donc ceci :

' tablo(0).start = 1

' tablo(0).length = 4

' tablo(1).start = 5

' tablo(1).length = 2

' tablo(2).start = 7

' tablo(2).length = 2



For i = 0 To UBound(tablo)

If tablo(i).start <> 0 Then

MsgBox Mid$(sDonnee, tablo(i).start, tablo(i).length)

End If

Next i





End Sub


























Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
15 avril 2005 à 13:56
fonctionne quel que soit le format utilisé.

Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
youkizouki Messages postés 82 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 12 octobre 2005 1
15 avril 2005 à 16:56
superbe,

merci Econs c'est vraiment sympa ! je regarde à ca tout de suite...

merci, d'avoir lu ma question "entièrement", de l'avoir compris et surtout de me retourner une
réponse à la hauteur de ma question... je craignais ne pas me faire suffisament comprendre

merci a toi aussi zippro mais ce n'est pas tout a fait ce que je cherchais...

a tres bientot j'espere, bon week-end !

mika
0
Rejoignez-nous