Txt et excel VBA

Résolu
cs_steed12 Messages postés 25 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 9 janvier 2006 - 7 janv. 2006 à 00:20
cs_steed12 Messages postés 25 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 9 janvier 2006 - 9 janv. 2006 à 22:53
Boujour à tous, voilas j'ai un fichier txt qui doit avoir au moins
100000 carractère et je voudrait l'ouvrir sous excel en le coupant
comme je veux.



exemple : je voudrais que tout les 564 carractère il passe à la céllule de ligne suivante lors de l'import du txt.

Tout sa doit etre fait en vba mais j'avoue que je ne trouve pas. J'ai
essayé d'ouvrir le txt avec excel mais le problème est que lorsque je
choisie ou mettre les séparateurs, le fichier texte est sur une seule
ligne.



Je sais pas si c'est très compréhensible mais bon.

P.S.: je ne veux pas a avoir à modifier le txt en plus.





Merci d'avance à la personne qui pourra m'orienté.

Steed

8 réponses

cs_steed12 Messages postés 25 Date d'inscription mardi 4 janvier 2005 Statut Membre Dernière intervention 9 janvier 2006
9 janv. 2006 à 22:53
Je vois que mon sujet déchaine les passions, merci à tous ceux qui y on
réfléchie mais j'ai trouver comment faire depuis excel en VBA, voila
source :



Option Explicit



Dim Fichier As String

Dim Ligne()

Dim nbmoulinette As String

Dim carracterenow As Double

Dim i As Integer

Dim g As Integer

Dim nblignetraite As Double

Sub test()

carracterenow = -563

Dim Freenum As Integer



Freenum = FreeFile

Fichier = "D:\Rep de travail\Bureau\dadscrc 2004\AD2142.txt"

Open Fichier For Input As #Freenum

i = 1

While Not EOF(Freenum)

ReDim Preserve Ligne(i)

Line Input #Freenum, Ligne(i)

If Len(Ligne(i)) = 564 Then

Range("A" & i) = Ligne(i)

Else

nbmoulinette = (Len(Ligne(i)) / 564)

MsgBox nbmoulinette

For g = 1 To nbmoulinette

carracterenow = carracterenow + 564

Range("A" & g) = Mid(Ligne(i), carracterenow, 564)

Range("B" & g) = Len(Range("A" & g))

Next g



End If

i = i + 1

Wend

Close #Freenum

MsgBox (Len(Ligne(1)))

End Sub





Merci a tous et à bientot.

Steed
3
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 janv. 2006 à 02:46
Bonsoir,
De quelle forme est le contenu de ton fichier texte ?
Est-ce simplement une chaine de caractères de 10000xxx caractères ? est-ce séparé par des ;,:/... ? par des retours à la ligne ?
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
7 janv. 2006 à 12:19
Moi je crois qu'il n'a aucun séparateurs et que tout est d'une traite!

La question primordiale est : Y'a-t-il, dans ton texte, des caractères "," ou ";" ???
Autrement dit : De quoi n'est pas composé ton texte (j'ai bien dit "n'est pas") ?

Car, en effet, on va devoir insérer des caractères séparateurs dans ton fichier d'origine. Du coup, évidemment, il ne faut pas que ces caractères soient déjà existants!!!

Mais bon, le plus simple (d'où la question de Willi) serait d'ajouter des retours chariot (retour à la ligne si tu préfères) dans ce fichier car Excel considérera qu'il s'agit d'une nouvelle ligne et donc, le mettra dans la cellule en dessous.

En fait, la technique consiste à importer (ouvrir, si tu préfères) ton fichier "brut" dans Excel. Excel reconnait plusieurs types de fichiers et est capable d'ouvrir les fichiers qui n'ont pas vraiment de standard... mais avec quelques conditions. Les fichiers de ce "non-type" sont considérés comme étant des fichiers de type "CSV". Excel, lorsqu'il va tenter de les ouvrir va également tenter (puisque c'est son rôle et que l'utilisateur est sensé savoir ce qu'il fait) de les comprendre... C'est à dire qu'il considère que ces fichiers, puisque l'utilisateur veux absolument les ouvrir par Excel, sont des tableaux. Il va donc tenter de retrouver leur structure. Tout tableau a des lignes, des cellules, des colonnes, ... Excel est donc très bien fait de ce coté là. Mais tous ces éléments (les cellules) sont généralement séparés dans les fichiers (en fait, ils doivent l'être sinon Excel ne peut pas retrouver leur structure).
Les séparateurs classiques sont :
- le caractère de tabulation et/ou une tabulation via des espaces [nombre d'espaces réguliers];
- la virgule;
- le point-virgule;
- un retour à la ligne (pour séparer les lignes de cellules).
Les colonnes sont donc déduites de fait !

Il va donc falloir modifier ton fichier de base de manière automatisé via le VB. Voilà pourquoi on a besoin de ces informations.
Mais je te rassure, rien de bien compliqué : un "Open", une boucle Do/Loop ou For/Next, un Mid$ et ce sera vite réglé.

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
7 janv. 2006 à 14:47
Vous ne répondez pas à sa question, puisque justement lui ne veut PAS DEVOIR MODIFIER SON TEXTE.

Je ne sais pas si c'est faisable :

Accèder au fichier text via VB, stocker son contenue dans une variable String.
Et tous les X caractères insérer le caractere "retour chariot".
Et pour finir l'ouvrir avec excel qui va changer de cellule vers le bas a chaque retour chariot.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
7 janv. 2006 à 14:55
Cela est tout à fait faisable, il n'y a vraiment rien de compliqué.
Ce qu'ont demandent c'est de précisez la structure de son fichier texte pour pouvoir y répondre.....
Qui a parlé de modifier son texte ??
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
7 janv. 2006 à 15:54
Il ne veux pas modifier son texte, ok, mais on a subodoré qu'il ne voulais pas le faire... manuellement !!!

Le VB automatisera le procédé, c'est tout ! Mais son texte, de toute façon, il devra bien être un tantinet modifié !!!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
cs_LeGrosWinnie Messages postés 47 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 18 mai 2007
7 janv. 2006 à 16:24
"Ce qu'ont demandent c'est de précisez la structure de son fichier texte pour pouvoir y répondre....."

Imagine toi que c'est un extrait de roman et le tour est joué...
Si c'est un texte tout pres je ne vois pas l'interet de se faire chier avec du VB, suffit de faire clic droit ouvrir avec puis excel et y'a rien à faire.

"Le VB automatisera le procédé, c'est tout ! Mais son texte, de toute façon, il devra bien être un tantinet modifié !!!"

Justement, comment tu fais pour modifier un texte automatiquement grâce à VB ? Parce que si tu peux modifier un texte grace à VB ça revient à ce que moi je disais...
C'est comme si tu me demandais : "combien ça fait 1+1 ?" et moi je te réponds : "je connais la réponse"...Ca avance vachement tu trouves pas ???

On dirait pas que vous etes programmeur...moi au moins je laisse entrevoir une solution programmable...
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
7 janv. 2006 à 16:40
Oui mais c'est oublier le sujet de l'exercice !!! Je te le rappelle :
"... j'ai un fichier txt qui doit avoir au moins 100000 carractère et je voudrait l'ouvrir sous excel en le coupant comme je veux.
exemple : je voudrais que tout les 564 carractère il passe à la céllule de ligne suivante lors de l'import du txt.
Tout sa doit etre fait en vba mais j'avoue que je ne trouve pas.
"

Bref, on ne peut pas subodorer qu'il s'agisse d'un roman. Et quand bien même, est-ce que ce roman utilise des caractères ASCII particuliers ??? On n'en sait rien!
Moi, en tant que codeur, je me dois de subodorer que le texte n'est qu'une suite d'octets! D'où ma question : y'en aurait-il un qui ne soit pas utilisé afin de l'utiliser comme séparateur ?

Mais d'un autre coté on peu aussi s'imaginer ne pas passer par la méthode Open et ouvrir manuellement le fichier via l'instruction Open en mode binary par exemple...

Comme quoi, on est pas si fermé d'esprit que ça!!! Mais il nous manque un chouïa plus d'infos, c'est tout, pas de quoi en faire une patate!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Rejoignez-nous