luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005
-
27 juil. 2005 à 17:15
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005
-
27 juil. 2005 à 23:05
Après réflection, je pense qu'il est plus simple de le faire avec un fichier texte. Cependant avant, j'avais les différentes données en les unes au dessous des autres :
1
2
3
mon code était :
stFichier = (App.Path & "\Essai.txt")
Open stFichier For Input As #1
num_fiche = 0
Do While Not EOF(1)
num_fiche = num_fiche + 1
Line Input #1, tabl1(num_fiche, 1)
Line Input #1, tabl1(num_fiche, 2)
Line Input #1, tabl1(num_fiche, 3)
Line Input #1, tabl1(num_fiche, 4)
Line Input #1, tabl1(num_fiche, 5)
Line Input #1, tabl1(num_fiche, 6)
Line Input #1, tabl1(num_fiche, 7)
Line Input #1, tabl1(num_fiche, 8)
Line Input #1, tabl1(num_fiche, 9)
Line Input #1, tabl1(num_fiche, 10)
Line Input #1, tabl1(num_fiche, 11)
Line Input #1, tabl1(num_fiche, 12)
Line Input #1, tabl1(num_fiche, 13)
Loop
Close #1
Maintenant pour chaque fiches, les différentes données sont les unes à cotée des autres, le enter ne sert que pour insérer une autre fiche, d'où :
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201849 27 juil. 2005 à 18:40
tu sais que tu as "21 colonnes" en fait, et tu peux compter ton niombre de lignes au fur et à mesure. tu as tout cedont tu as besoin.
pour excel, tu n'as pas dit si VB reprenait excel, ou si tu travaillais à partir d'un fichier excel converti (manuellement).
si c'est le 2e cas, c'est dans les options d'export.
afficher ensuite chaque valeur dans un TxtBox, bon courage, çà va être moche et inutile, mais c'est faisable.
il te faut procéder de la 2e manière indiquée, à savoir faire un Type de 21 var :
Private Type MesColonnes
c01 as string
c02 as string
...
c21 as string
end type
dim Tabligne() as MesColonnes
ensuite, avec i, tu sauras qu'il y a par exemple 3lignes, donc 63 TxtBox
tu n'as qu'une TxtBox à créer, en groupe, puis Load 62 fois.
plus moche, dur dur....
en plus, je crois qu'une form est limitée en composants, je ne sais pas si c'est en composants fixes ou totaux....
(je viens d'essayé avec 1000, çà marche...)
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201577 27 juil. 2005 à 17:55
Salut
Bah en fait, à chaque fois que tu vas lire UNE ligne, tu liras les X paramètres de ta fiche : Suffit d'utiliser Split par exemple :
Dim Tableau() As String
Tableau = Split(LaLigneLue, vbTab)
et tu auras la première donnée dans Tableau(0), et la dernière dans Tableau(UBound(Tableau))
Attention : si ta ligne se termine par un vbTab, la dernière donnée sera vide, normal
A toi de les réintégrer dans ton propre tableau avec une boucle.
Eventuellement, regarde l'aide de la fonction Split, je crois qu'il est possible de Split vers un tableau à plusieurs dimensions, ce qui simplifierait la routine.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 27 juil. 2005 à 18:18
En fait j'ai 21 valeurs qui sont toutes séparée par une tabulation. Mais elle provienne d'un tableau en excelle, alors y a t'il un moyen de passer excelle en .txt et en remplaçant le ";", car si j'ai bien compris, ça facilite l'opération ?
Car les 21 valeurs correspondent à 21 cases textes, et
Vous n’avez pas trouvé la réponse que vous recherchez ?
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 27 juil. 2005 à 18:24
En fait j'ai 21 valeurs qui sont toutes séparée par une tabulation. Mais elle provienne d'un tableau en excelle, alors y a t'il un moyen de passer excelle en .txt et en remplaçant le ";", car si j'ai bien compris, ça facilite l'opération ?
Car les 21 valeurs correspondent à 21 cases textes, et donc, il faut que je place les différentes valeus dans ces cases ?
L'indice i me permet de connaitre le nombre de ligne donc le nombre de fiche, mais comment je peux mettre (différencier) les différents textes et les placés dans les cases textes ?? Est ce qu'il ne me faut pas un indice suplémentaire ?
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201849 27 juil. 2005 à 21:23
parce que tu commences ton tableau à 1. donc tabligne(1) n'existe pas encore quand tu le remplis.
mais comme de toute manière, tu as oublié de redimentionner ton tableau dans la boucle (redim preserve tabligne(num_ligne)) .......
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 27 juil. 2005 à 21:41
Ha, ok .... Donc j'ai commencé à zéro, et mis le redis, il commence bien à lire le fichier mais il s'arrete à la num_fiche 396 et j'ai le message d'erreur suivant : Input past end of file ?? Alors que dans le fichier texte, tout est normal, j'ai vérifier, y a bien les 20 champs séparés par un ; donc ok.
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 27 juil. 2005 à 22:04
je viens de vérifié ce que j'ai mis au dessus, même avec seulement 4 lignes, il me met ce message d'erreur (Input past end of file) ?? Ca veut pas dire qu'il n'arrive pas au bout ?
Je sais pas, j'ai un peu du mal avec les messages d'erreurs ....
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201849 27 juil. 2005 à 22:05
essaie avec simplement :
(...)
Input #1, tabligne(num_fiche).c01
(...)
là, on lui dit de prendre la ligne complète uniquement dans la première "colonne de tableau"
si il n'y a pas d'erreur, alors çà veut dire qu'actuellement, le passage dans la boucle ne prend pas correctement les différentes occurences du fichier...
Je lui ai demander dans une case texte le tabligne(num_fiche).c01 il m'indique bien quelque chose de la première ligne, mais pas la première partie de chiffre avant le ;
La première ligne du fichier texte est :
4/02/1978;6;17;30;31;35;37;15;281535;460171;0;0;0;0;18;5418;1701;28,51;35206;1,24
et il m'indique la partie en rouge.... BIZARRE ???
luca62
Messages postés56Date d'inscriptiondimanche 26 décembre 2004StatutMembreDernière intervention 4 août 2005 27 juil. 2005 à 22:43
ok, ça fonctionne bien, j'ai remplacer les , pour des . et les ; par les ,
il m'indique bien tout ce qu'il y a entre deux ,XXX,
Mais dans une ligne comment différencier les 20 valeurs ? car j'ai fait txtDate = tabligne(num_fiche).c01 et forcement j'ai toute la ligne dans la case txtDate, enfin pas toute la ligne les 20 valeurs, donc à chaque fois que je clique sur les flèches qui permette de changer de ficher, ben il passe les différentes valeurs en revue ...
Donc, dans cette ligne comme attibué aux 20 cases textes les 20 valeurs d'un ligne ?