Yaume1
Messages postés86Date d'inscriptionmercredi 27 juillet 2005StatutMembreDernière intervention13 septembre 2005
-
27 juil. 2005 à 17:59
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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".
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201578 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
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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)
Yaume1
Messages postés86Date d'inscriptionmercredi 27 juillet 2005StatutMembreDernière intervention13 septembre 20051 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.
PCPT
Messages postés13280Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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