|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Bonjour
N'ayant pas eu de réponse à une précédente demande d'aide, je me permets de reposer ma question sous une autre forme : Dans un fichier texte, comment récupérer le premier caractère d'un paragraphe et le mettre dans une variable. Le but est de pouvoir ensuite traiter ce paragraphe : si ma variable = "A" faire ceci, si ma variable = "C" faire cela , etc ... Merci de votre aide |
|
|
00
|
|
|
#2 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Code :
A+ |
||
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
A la place d'un If, je ferais un select case.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#4 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Très juste... Heu... Oli !
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Excusez moi de ne pas avoir répondu plus tôt pour cause d'absence.
Le problème est le suivant : j'ai habituellement un fichier texte de 120 000 lignes qui se présente ainsi : A130789274559523243_1169079935035700011001 0114071969131012007310120070000000000000000000002900000017400000000000000000000000000000000 C130789274_169079935035700007000031012007AMI 01000100010000290000029006000001740000290000000 A130789274559661316_1178081320400000011001 0115081978111012007110120070000000000000000000020250000121500000000000000000000000000000000 C130789274_178081320400000007000011012007B 01000500010000027000013506000000810000135000000 J'ai mis un souligné à la place de l'espace. Si la ligne commence par A, je veux sélectionner les caractères 11 à 19 et les coller à la même place dans la ligne C. Le reste des lignes ne change pas. Avant traitement : A130789274559523243_ C130789274_ et après traitement : A130789274559523243_ C130789274559523243_ Merci de votre aide. |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
C'est pas un collage, mais une insertion.
Es-tu certain que word est le programme idéal ? 120 000 lignes, ça te fais un fichiers de quelle taille ? Sérieusement, as tu pensé que d'autres soft sont mieux équipé pour ce genre de traitement. Je pense à Access qui est une logiciel fait pour gérer des données.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Oui ça me fait des fichiers énormes (actuellement 15833 ko)qui sont crachés par un logiciel administratif qui ne me donne pas le choix sur le type de sorties.
Actuellement, je récupère le fichier texte de sortie, et je le bidouilleavec word pour insérer des espaces.Ensuite je le coupe en fichiers plus petits avec un outil appelé yoyo cut.. J'importe chaque fichier dans excel en trois colonnes. En faisant atteindre les cellules vides puis copier la ligne du dessus si la cellule est vide, j'arrive à insérer ma séquence de texte au bon endroit. J'exporte en CSV. Pour terminer, avec Word, je supprime les ; de chaque fichier et je recolle tous mes fichiers en un seul fichier texte. Je peux alors importer ce fichier dans une base access. C'est assez fastidieux, d'autant que mon fichier d'origine se rallonge chaque semaine. C'est pourquoi j'avais pensé à une macro dans Word. Je ne suis pas fermé à une autre solution si il y a. |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
Si c'est pour finir dans Access, ne passe pas par Word, fait tes traitement en Access directement.
120000 lignes à chaque sortie, tu fais quoi avec autant de lignes ? J'espère que ta sortie n'est pas quotidienne. Pose ta question sur le forum Access !
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Je n'ai pas de difficulté (du moins je ne crois pas) pour importer un fichier texte dans Access.
Mon problème c'est que j'ai besoin de traiter les lignes "C" et que le seul moyen de relier les différentes lignes "C" est la séquence que je veux extraire des lignes "A". En gros, la ligne "A" me donne la reference d'une facture et chaque ligne "C" traite un détail de cette facture. |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
Tu fais le traitement en DAO avec des recordset et tu va gagner en vitesse et éviter ces manipulations.
Avec le DAO, tu vas parcourir le enregistrement, et pour chaque enregistrement A...... tu vas avoir une variable que tu va pouvoir insérer dans les enregistrements C....... jusqu'au prochain A
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
C'est une piste dont je ne soupçonnais même pas l'existence. Je vais commencer à étudier la question.
En tous cas, merci pour tout. |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
Si tu veux un endroit où prendre des information sur le DAO, Tofalu a fait un tuto qui vaut le détour.
http://warin.developpez.com Je te le conseille.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Bonsoir
Après divers essais et erreurs, j'ai réussi à écrire une macro qui marche . Je ne sais pas si elle est très bien construite mais elle me dépanne. Si cela peut intéresser quelqu'un, la voici : Code :
|
||
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
En regardant d'un peu plus près,
Il n'est pas utile de faire cette transformation, il y a des séquences identiques dans chaque ligne. Avec une simple requête, on peut faire ce que l'on veut. Merci pour la Macro.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 13 ![]() |
Je n'ai pas trouvé. Si tu me montres je suis preneur.
|
|
|
00
|
|
|
#16 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 351 ![]() |
Cette séquence
1169079935035700011001 0114071969131012007 de la première ligne, on la retrouve aussi dans la ligne commençant par C qui suit, mais plus dans la suivante. Je pense qu'elle date du 31/01/2007 Pour extraire ces séquences, on peut utiliser En connaissant le but, ce serait plus simple. Les lignes A et C n'ont pas la même longueur alors que toutes les A sont de même longueur, ainsi que toutes les C. Pour info, combien de temps tourne ta macro sur 120000 lignes ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ? Débutez en VBA Mes articles Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus ! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com