Identification de caracteres

Résolu
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006 - 28 févr. 2006 à 10:20
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006 - 28 févr. 2006 à 14:29
Salut a tous,
Jdébute en VB depuis hier et je cherche a lire un fichier qui a cette tete:

$ attention commande nouvelle et titre entre quotes
COOR 1 8.4300 0.9814
COOR 2 9.6000 1.0282
....

Je voudrais tester si la ligne débute par "COOR"; et si c'est les cas, enregistrer les 3 valeurs qui la suivent.

J'ai navigué sur le forum et j'arrive a ouvrir le fichier et a lire les lignes une a une, mais je sais pas encore identifier des caracteres et les enregistrer dans des variables

Si quelqu'un peut m'aider,, je suis preneur!

15 réponses

cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 11:12
bah j'ai eu le temps d'avancer un peu, et j'arrive a lire les données la mais en tant que string, et je suis ne train de chercher comment jpeux enregistrer des données doubles
j'ai ca la :

If (Mid$(Var1, 1, 4) = "COOR") Then
If (Mid$(Var1, 6, 6) <> "'test'") Then
affiche = MsgBox(Mid$(Var1, 10, 13))
'pt(temp) = Mid$(Var1,10,13)) <--- la jvoudrais lire un double ^^
MsgBox pt(temp)
End If
temp = temp + 1
End If
3
cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006
28 févr. 2006 à 11:28
Pour vérifier que ta ligne commence par "COOR", en supposant que tu as lu la ligne de ton fichier et rangé dans la variable Ligne de type string

if (InStr(1,ligne,"COOR",4) =1) then msgbox "La ligne lue commence par COOR "& chr(13) & ligne


Pour extraire tes données, en supposant que leurs positions est
connues, tu peux utiliser la fonction mid() exemple la valeur1 commence
au 8éme caractére et tient sur 2 caractère :

dim Element1 as string

dim Element2 as string

Element1=mid(ligne,8,2)

Element2=mid(ligne,17,6)



Espérant t'avoir répondu

N'hésites pas si tu bloque encore

A+




C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
3
cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006
28 févr. 2006 à 11:38
Pt() doit être un type double

exemple:

dim i as double

i = val(mid(ligne,17,6))



C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 févr. 2006 à 14:02
Salut,

Voici un petit exemple pour utiliser la fonction Split

Dim Str As String
Dim i As Integer
Dim Resultat() As String
Str = "COOR Ceci est un exemple"
Resultat = Split(Str, " ")
For i = 0 To UBound(Resultat)
MsgBox Resultat(i)
Next

En fait Split te retourne dans un tableau chaque groupe de caractere compris entre deux Espace (" ")
Mais si par exemple tes esembles sont separes par des tu peux tres bien faire Resultat Split(Str, "=").

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
3

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

Posez votre question
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
28 févr. 2006 à 11:09
Bonjour

Le principe est le meme que
http://www.troxsa.info/index.php?option=com_content&task=view&id=45&Itemid=2

Il faut simplement changer les conditions et utiliser IndexOf Ou une String avec Starwith, je te fait un exemple si tu veux c'est assez facile a faire


http://www.troxsa.info/Code VB.net
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 11:14
a noter que la ligne:
If (Mid$(Var1, 6, 6) <> "'test'") Then est ici ca le fichier commence par
COOR 'test' ... et on se fout de cette ligne ;)
0
troxsa Messages postés 553 Date d'inscription jeudi 28 novembre 2002 Statut Membre Dernière intervention 2 octobre 2016 1
28 févr. 2006 à 11:16
On dirais bien du vb6 tout ça ! je suis desoler je peux pas t'aider sur du VB6 car je connais que le vb.net (c#)

@+

http://www.troxsa.info/Code VB.net
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 11:17
la méthode Val() est mon amie :P

Vraiment super bien foutu ce site avec son forum, son moteur de recherche et les aideurs ;)
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 févr. 2006 à 11:44
Salut,

Tu veux enregistrer les valeurs ou?
Quel est le separateur des valeurs?

Sinon tu peux essayer la fonction Split.

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 12:19
C'est en gros ce que j'avais fait :)
la j'ai:
pt(temp) = Val(Mid$(Var1, 6, 6))

jsuis quasiment à la fin la et me reste a enregistrer une suite de nombre dont je ne connais pas la taille et qui n'a pas de séparateur: par exemple:

CAS 1 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

j'ai:
if (Mid$(Var1, 1, 4) = "CAS") Then

et la jsuis en train de fouiller sur le site comment jpeux faire ca
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 12:45
Comment je pourrais utiliser la méthode Split?
1- faudrait enregistrer que la partie de la ligne a splitter, jvois pas comment faire :s
2-pour faire le split en lui meme j'ai trouvé sur lesite comment faire mais voila quoi ^^

qqn pourrait venir a mon secours?
0
cs_DURANDO Messages postés 34 Date d'inscription jeudi 16 février 2006 Statut Membre Dernière intervention 21 mars 2006
28 févr. 2006 à 12:47
T'as pas de séparateur, mais t"'as des espaces :

Tu peux faire une boucle dans laquelle tu cherche le premier caratere <>" ",

tant qu'il est trouvé, tu retire les premier caractere

Exemple var = "CAS 1 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"



Dim VAR As String

Dim i As Integer

Dim j As Integer

VAR = "CAS 1 19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19"

i = 1

VAR = Mid(VAR, InStr(1, VAR, " "))

While Mid(VAR, i, 1) = " "

i = i + 1

Wend

j = i

While Mid(VAR, j, 1) <> " "

j = j + 1

Wend

MsgBox "variable 1 " & Mid(VAR, i, j - i)



On doit pas être loin de la vérité avec ça.



A+




C'est pas parceque les c.. sont plus nombreux qu'ils ont forcément raison!(dixit Coluche)
Une seule ligne de conduite, l'objectivité.
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 14:11
Et est ce que qqn saurait me dire comment jpeux "copier/coller" la ligne voulue pour effectuer mon split?

CwamM,
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
28 févr. 2006 à 14:17
Re,

Si ton fichier s'appelle Test.txt:

Dim Ligne As String
Open "C:\Test.txt" For Input As #1
While Not EOF(1)
Line Input #1, Ligne
'Met ce que tu veux ici pour effectuer tes operations sur la ligne

Wend


Close #1

Voila j espere avoir pu t'aider un peu
@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
cwamm Messages postés 34 Date d'inscription mardi 28 février 2006 Statut Membre Dernière intervention 9 juin 2006
28 févr. 2006 à 14:29
l'idée c que le fichier est déja ouvert
et que une fois que j'ai passé mes "COOR" en revue
je passe mes "CAS" en revue, et qd j'ai testé si je suis sur un cas, la commande:
Line Input #2, vartexte
Dim Resulat() As String
Resultat = Split(vartexte, " ")

me splitte la ligne du dessous!!

comment faire pour enregistrer cette ligne dans une variable et comme splitter que les objets integer et de ne pas garder en mémoire les string?

Merci de vos aides ^^

CwaM, qui rame, mais qui fouille!
0
Rejoignez-nous