Séparation des valeurs d'un tableau .txt

Yaume1 Messages postés 86 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 13 septembre 2005 - 27 juil. 2005 à 17:59
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 28 juil. 2005 à 16:30
Salut

Je débute et je voudrais créer un petit formulaire qui m'ouvre un fichier .txt dans lequel se trouve un tableau de valeurs qui se présente sous la forme suivante et qui me copie ces valeurs sur une feuille Excel :

- sur une même ligne de mon .txt, les valeurs de chaque colonne de mon tableau sont séparés par des ";"
- chaque ligne est tout simplement séparée de la précédente par un retour chariot
- le tout en pensant que le nombre de lignes et de colonnes varie d'un .txt à l'autre.

J'ai essayé des trucs du style maString.Split(";") mais, à chaque fois que je fais une opération (même toute simple) sur un string j'ai un message d'erreur qui me dit "erreur de compilation : qualificateur incorrect".


Voilà. Merci d'avance si vous pouvez m'aider.

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
27 juil. 2005 à 18:11
Salut
Ce que tu demandes, c'est "Comment lire un fichier au format CSV ?"
Il suffit d'enregistrer une macro sous Excel dans laquelle tu fais Fichier, Ouvrir, fichier type CSV" et pis c'est tout.
Tu n'auras plus qu'à regarder quelle syntaxe a été utilisée dans la macro et de la reproduire avec les bons noms de fichier.

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
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
27 juil. 2005 à 19:45
le Split génère un tableau
pour ton cas de figure, tu dois lire le fichier texte, et à chaque ligne, regarder ou se trouve le ";" avec la fonction Instr()
si il te renvoie 0, c'est qu'il n'y en a pas ou plus. sinon, il te renvois la position du ";" dans la chaîne
regarde dans les Post déposés aujourd'hui, il y a la question inverse (plus ou moins)

PCPT
0
Yaume1 Messages postés 86 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 13 septembre 2005 1
28 juil. 2005 à 16:05
En fait il se trouve que certaine fonction disponible sou VB6 ne sont
pas disponibles avec le Visual Basic qui s'ouvre à partir d'excel. Je
ne sais pas pourquoi mais la fonction Split par exemple est reconnue
sous VB6 lorsque l'on veut créer un exécutable autonome. En revanche,
si on souhaite utiliser cette fonction sous le VB qui s'ouvre depuis
excel, elle est inconnue et génère un message d'erreur.



Je ne savais pas que c'était 2 VB différents. Les bibliothèques pourraient au moins être partagées...





Merci quand même, si vous avez d'autres conseils, je suis preneur



Au passage Jack, ce n'est pas un csv que je veux ouvrir mais bien un
txt. Si tu veux mon tableau se présente sous la forme suivante :



1; 2; 3;

1; 5; 3;

9; 354; 321;



(c'est un exemple bien sûr).



Voilà, je voudrais transférer ce tableau (qui dans le cas réel fait à
peu près 10 colonnes sur 450 lignes !!!) sur une feuille excel et gérer
tout ça à partir d'un formulaire VB.



Merci pour votre aide
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
28 juil. 2005 à 16:30
excel, etc.. = macro = VBA
fonction Split (entre autre) reconnue par VB(x)

tu arrives à lire une ligne
prenons cet exemple :

maligne="1;2;3;"
pour être tranquille avec le dernier ";", au tout départ, tu l'enlèves :maligne left(maligne(len(maligne)-1)) 'donc "1;2;3"
dim pos as integer
pos=Instr(maligne,";")
tant que pos<>0, c'est que tu as un ";" (à lire en boucle)
donc en boucle, pos aura successivement 2 4 6
tu enregistres de 1 à 2
de 2+1 à 4
de 4+1 à 6

l'idée est là.
PCPT
0