gribouillex
Messages postés172Date d'inscriptionlundi 10 octobre 2005StatutMembreDernière intervention16 mai 2011
-
7 juil. 2006 à 23:11
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007
-
8 juil. 2006 à 12:05
bonjour,
Voilà, j'ai un fichier txt assez gros et j'aimerais importer dans une feuille excel une petite partie du texte.
Pour savoir à partir d'où je souhaite effectuer l'importation, il faut faire une recherche du mot "REPERE" qui n'apparaît qu'une fois dans le fichier et qui est contenu dans la première ligne à importer. L'extrait à importer se termine à la première ligne où se trouve le mot "END".
Voici un extrait du fichier txt :
------------------
blabla
blabla
blabla
cette ligne contient le mot REPERE qui va permettre de savoir à partir d'où l'importation va débuter
tralala
tralala
tralala
on s'arrête à cette ligne qui contient le mot END (attention on peut trouver ce même mot plusieurs fois plus loin... )
blabla
blabla
blabla
------------------
Ensuite, une fois mon traitement sous excel terminé, les nouvelles données doivent retourner dans le fichier en lieu et place des précédentes, sachant qu'il y aura plus de lignes qu'à l'origine.
exemple, ces 7 lignes viendront remplacer les 5 précédentes :
------------------
cette ligne contient le mot REPERE qui va permettre de savoir à partir d'où l'importation va débuter
tralala tsoin tsoin
tralala tsoin tsoin
tralala tsoin tsoin
tralala tsoin tsoin
tralala tsoin tsoin
on s'arrête à cette ligne qui contient le mot END (bien que l'on puisse trouver plus loin ce même mot)
------------------
La question : comment écrire ces deux codes... j'ai essayé et je ne trouve pas....
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 juil. 2006 à 01:08
Salut
Si si, tu es bien dans la catégorie VBA ;-)
Comme toujours il faut décomposer ce que tu as faire (accroche toi) :
- Ouvrir le fichier : Open monFichier For Binary As #1
- Préparer unevariable de même longueur avant : Temp$ = String(LOF(1), "x")
- Lire le contenu entier du fichier dans une variable : Get #1, , Temp$
- Fermer le fichier : Close #1
- Rechercher le REPERE : Position = Instr(1, Temp$, "REPERE")
- Mémoriser la position du début : MemoDebut = Position
- Rechercher le END : Position = Instr(MemoDebut, Temp$, "END")
- Mémoriser la position de la fin : MemoFin = Position
- Isoler le texte : Texte$ = Mid$(Temp$, MemoDebut, MemoFin - MemoDebut)
- Envoyer le texte à ta macro pour lui faire ce qu'elle veut : Call maMacro(Texte$)
Attention : Si tu veux que la variable Texte$ revienne avec les modifs apportées dans ta macro, il faut impérativement déclarer le paramètre Texte en ByRef, exemple :
Public Sub maMacro(By Ref monTexte As String)
Pour réécrire le fichier, c'est pareil, mais à l'envers
- Remettre le Texte modifié à l'intérieur de la variable qui contient le contenu du fichier :
Temp$ = Left$(Temp$, MemoDebut - 1) & Texte$ & Mid$(Temp, MemoFin + 1)
- Ouvrir le fichier : Open monFichier For Binary As #1
- Ecrire le contenu entier du fichier : Put #1, , Temp$
- Fermer le fichier : Close #1
C'est pas trop mon habitude de fournir du "prémaché" mais là, j'étais en manque de code,
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro