olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008
-
11 janv. 2007 à 11:34
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
11 janv. 2007 à 16:38
Bonjour,
Je souhaite faire un code qui lis les données d'un fichier texte. Ce fichier texte contient plusieurs types de séparateur de données et en fonction de ces séparateurs je stock les données dans différents tableau. Or j'ai un petit problème de stockage des données dans un tableau 2 dimensions.
Voici mon code :
Dim donnees_PR() As String
Dim detail_donnees_PR() As String
donnees_PR = Split(premier_decoupage(2), vbTab)
For j = 0 To UBound(donnees_PR)
detail_donnees_PR = Split(donnees_PR(j), " - ")
Next j
Je commence par découpé les données séparé par une tabulation dans le tableau donnees_PR, puis je redécoupe les données de ce tableau par le séparateur " - " puis stock ces données dans le tableau detail_donnees_PR.
Le pb de mon code je pense que vous l'avez déjà trouvé, j'écrase dans ma boucle for les détails_données à chaque rebouclage.
Je pense qu'il me faudrait passer le tableau donnees_PR en 2 dimensions afin de faire 2 boucle imbriqué pour stocker le nombre de donnees_PR dans la première dimension et les détail_donnees_PR dans la seconde dimension.
Voilà, si quelqu'un sait comment m'aider, qu'il n'hésite pas.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 janv. 2007 à 11:58
Suggestion simple :
utilise une listebox invisible toto
Dans ta boucle For...
utilise le tableau detail_donnees_PR créé par le split pour alimenter ta listbolx toto (additem)
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 11 janv. 2007 à 13:58
Salut,
Je en sais pas si c'est ce que tu cherches a faire mais avec un "tableau" à deux dimentions, tu peux essayer ceci:
Dim j As Integer
Dim Donnees_PR() As String
Dim Detail_donnees_PR()
Donnees_PR = Split(premier_decoupage(2), vbTab)
ReDim Detail_donnees_PR(0 To UBound (Donnees_PR))
For j = 0 To UBound(Donnees_PR)
Detail_donnees_PR(j) = Split(Donnees_PR(j), " - ")
Next j
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008 11 janv. 2007 à 15:48
Merci jrivet ton code fonctionne, il répond bien à ma demande.
Cependant je ne comprend quelque chose.
Pourquoi omet tu sur les 2 lignes suivantes de déclarer le type "as string" ? :
Dim Detail_donnees_PR()
ReDim Detail_donnees_PR(0 To UBound(Donnees_PR))
jrivet
Messages postés7393Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201259 11 janv. 2007 à 16:38
Salut,
En fait Detail_donnees_PR() dans mon exemple ne sera pas de type String à la base, mais Variant voila tout.
Certes cela est moins "beau", mais ca fonctionne et c'est rapide à mettre en place. Mais en revanche si tu es à cheval sur la taille mémoire, je te conseille donc de trouver autre chose que le variant.
Tu remarqueras que ma solution ne donne pas le meme résultat que celle de [auteurdetail.aspx?ID= 615490 jmfmarques], donc à toi de voir ce que tu souhaite.
NOTE: ReDim Detail_donnees_PR(0 To UBound (Donnees_PR)) n'a jamais besoin du type de la variable (REdim et DIM)