cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 2023
-
11 juil. 2007 à 15:23
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 2023
-
11 juil. 2007 à 21:18
Salut tout le monde...
J'ai un petit problème que je ne réussi pas à trouver.
J'utilise un fichier texte et sur ma premiere ligne du fichier texte je retrouve cette information;
3 -0.1355 39.9398 0.00000 50
Je veux que dans mon tableau sur ma premiere ligne je retrouve un ligne et 5 colonnes.
La premieres colonnes aura le chiffre 3
Deuxième colones aura -0.1355
Troisième colonne aura 39.9398
Quatrième colonne aura 0.00000
Cinquième colonne aura 50
Je ne sais pas comment coder pour dire... prend l'info avant les espace et ca donne 3 ensuite reprendre l'info entre les espaces et sa donne -0.1355 et ainsi de suite.
ATTENTION Le code en gras est le code que je dois changer.
Je ne peux pas mettre de mid, right ou left car mon fichier ne saura pas toujours pareil... je dois utiliser les espaces pour remplir les variables.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 17:24
Je crois vraiment que la listview est toute indiquée et te faciliterait beaucoup de choses.
Mais c'est là ta décision :
Voilà donc un exemple commenté (j'ai simplifié en prenant d'emblée un tableau de 10 lignes et 5 colonnes)
Private Sub Command1_Click()
Dim montableau(9, 4)
toto = "aaaa bbbb ccc dddd eeee" ' ici la ligne lue dans ton fichier
monsplit = Split(toto, " ") 'on éclate
Tu as là l'inscription de la 1èere ligne (0)
'Pour les suivantes il te faut incrémenter ce 0 (utilise un compteur)
For i = 0 To UBound(monsplit)
If Trim(monsplit(i)) <> "" Then
montableau(0, i) = Trim(monsplit(i)) 'on écrit dans le tableau
End If
Next
'juste pour que tu voies ce qui a été inscrit en ligne 0
For i = 0 To 4
MsgBox montableau(0, i)
Next
End Sub
Il te reste à utiliser un compteur (pour aller de 0 à 1, puis 2, etc...) et à redimensionner à chaque fois ton tableau.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 15:30
Utilise plutôt Split (sur l'espace) pour éclater ta ligne et, au besoin, Trim (pour supprimer les espaces)
Insère les résultats de l'rray obtenu dans ton tableau.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 15:44
Re,
Je veux bien continuer, mais (je commence à me méfier, ces temps-ci) : confirme-moi que tu es bien sous VB6 (la présente section) et qu'il s'agit d'un tableau dynamique (qu'il faudra donc redimensionner à chaque ajout) et pas sous VBA (avec un "tableau" Excel)... car le traitement n'est pas du tout le même.
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 11 juil. 2007 à 15:50
Salut je suis bien en VB6 je ne connais pas encore tres bien les terme pour les tableau mais.... c'est un tableau ou par exemple si j'ai un fichier texte de ce style;
3 -0.1355 39.9398 0.00000 50
4 -0.2039 60.0697 0.00000 50
11 29.8643 40.0416 0.00000 50
12 29.7960 60.1715 0.00000 50
17 7.5041 43.0157 0.00000 50
18 19.0860 43.0550 0.00000 121
et bien le tableau aura sur sa premiere ligne toute l'info qui se trouve sur la premiere ligne du fichier texte (avec 5 colonnes bien sur). La deuxième ligne du tableau aura touta l'info de la deuxime ligne du fichier texte. Il y aura pas d'info qui pourra se retouver ailleur dans le tableau.
Je crois que je veux dire que le tableau n'est pas dynamique.. mais je ne suis pas certain....
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 11 juil. 2007 à 16:06
oui oui je sais qu'il ne se voit pas... je me suis mal exprimé...
Ce que je veux dire c'est que mon tableau sera utilisé par rapport au premier chiffre de la ligne et si par exemple j'ai cette ligne dans mon fichier texte;
3 -0.1355 39.9398 0.00000 50
et l'utilisateur aura rentrer le chiffre 3 dans un texte box et moi dans mon code j'utiliserai les information -0.1355 39.9398 0.00000 50 afin de faire des calcul.
c'est pour cela que la ligne doit etre "spliter" pour utiliser les varaibles...
Je voulais juste dire que l'info qui se retrouvre su la ligen 10 de mon fichier texte n'aura aucune relation possibel avec la ligne 2 de mon fichiers texte... tu comprends ??? Enfin....je vais te montrer un bout de code et c'est un tableau de ce style que j'utilise
Public TabNewStation() As String
Public TabVerticale() As String
Public TabDistance() As String
Public TabDisHor() As String
Public TabNewStationInst() As String
Public TabVerticaleInst() As String
Public TabDistanceInst() As String
Public TabDisHorInst() As String
For i = 0 To UBound(aMesLignes)
If InStr(NewStation, ".") > 0 Then 'Si Station contient un "." Alors
If LineCount = 0 Then 'La condition est imposé car VB n'aime pas un tableau vide
ReDim TabNewStation(LineCount)
ReDim TabVerticale(LineCount)
ReDim TabDistance(LineCount)
ReDim TabDisHor(LineCount)
Else
ReDim Preserve TabNewStation(LineCount) 'Le tableau garde les 3 Colonnes et Ajoute une Ligne
ReDim Preserve TabVerticale(LineCount)
ReDim Preserve TabDistance(LineCount)
ReDim Preserve TabDisHor(LineCount)
End If
TabNewStation(LineCount) = Trim(NewStation) 'Ajoute le No de Point dans la Colonne 0 Ligne X
TabVerticale(LineCount) = Vertical 'Ajoute le Vertical dans la Colonne 0 Ligne X
TabDistance(LineCount) = Distance 'Ajoute la Distance dans la Colonne 0 Ligne X
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 16:53
Bien compliqué, tout celà, et je ne suis pas certain d'avoir tout bien compris de ton mécanisme.
Il me semble simplement que tu souhaites éclater chaque ligne de ton fichier texte sur 5 colonnes, en vue d'une exploitation ultérieure (calculs)
Je crois que dans de telles conditions, le plus simple serait d'utiliser une listview (ce qui permettra de ne pas avoir à redimensionner sans cesse)..contenant 5 colonnes.
Cette listview pourrait, à ton gré, soit être totalement invisible, soit visible (et ton utilisateur pourrait alors déclencher les calculs non plus en saisissant dans une textbox, mais tout simplement en cliquant sur la listview).
Si celà te tente, fais savoir et je te mets en place la chose dès mon retour de promenade (la mer)...
cs_JeffC1977
Messages postés928Date d'inscriptionvendredi 10 novembre 2000StatutMembreDernière intervention23 septembre 20234 11 juil. 2007 à 17:03
Salut à tois... merci pour la suggestion c'est une bonne idée... mais ca ne peux pas fonctionner...
Je doit absolument "spliter" la ligne et mettre ce la dans un tableau...
Je vais essayer de t'expliquer ce que je veux en faire plus clairement... Mais selon moi c'est pas important mais si ca peux t'aider. Oublions pas que je veux de l'aide que pour spliter un ligne et mettre ca dans un tableau.
ok Donc l'utilisateur aura un fichier texte qui ressembel a ca
3 -0.1355 39.9398 0.00000 50
4 -0.2039 60.0697 0.00000 50
11 29.8643 40.0416 0.00000 50
12 29.7960 60.1715 0.00000 50
17 7.5041 43.0157 0.00000 50
18 19.0860 43.0550 0.00000 121
Division la premiere ligne
3 = Numéro du Point
-0.1355 = Coordonnée X
39.9398 = Coordonnée Y
0.00000 = Altitude
50 = Code
Je veux que si l'utilisateur inscrit le chiffre 3 dans un textbox alors j'aura dans des label la coordonnée en X et en Y. Obligatoirement l'utilisateur devra renter un autre chiffre dans un autre textbox afin de faire des calculs. Ces coordonnée seront utilisé pour faire des calculs mathématiques... Exemple, trouver la distance entre deux points, ou le gisement entre deux points.
Alors mon problème est seulement le fait de "spliter une ligne (pour le moment) et de mettre dans dans une ligne et 5 colonnes... voila...
merci de ton aide...
P.S. si c'est trop complexe fait moi signe... je refrai un autre post sur le Forum...Je nage un peu dans l'inconnu
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 juil. 2007 à 19:20
Ouille...
J'étais parti voir la mer en me disant que tu avais tout, mais vois que tu as bataillé de ton côté...
Bravo
et tu mérites alors ceci, qui évite les redimensionnements sans cesse :
Private Sub Command2_Click()
Dim montableau() As String
moncompteur = 0
Open "d:\essai.txt" For Input As #1 ' mets là ton chemin à toi.
toto = Input$(LOF(1), #1)
Close #1
monsplit1 = Split(toto, vbCrLf)
ReDim montableau(UBound(monsplit1), 4)
For i = 0 To UBound(monsplit1)
maligne = monsplit1(i)
monsplit2 = Split(maligne, " ")
For j = 0 To UBound(monsplit2)
montableau(i, j) = monsplit2(j)
Next j
Next i
'ce qui suit n'est que pour te permettre de vois ce qui a été écrit dans les 3 1eres lignes.
For i = 0 To 2
For j = 0 To 4
MsgBox montableau(i, j)
Next j
Next i
End Sub