Texte découpée > Access Visual Basic

Fermé
maximesm - 29 avril 2008 à 09:25
 maximesm - 7 mai 2008 à 14:12
Bonjour,
J'aurai besoin d'un coup de main pour réaliser un programme en visual basic sous Access
Le But de ce programme est d'intégrer un fichier txt comme ceci dans une base de données Access

620101360 13 0101200731122007364574067456
A620101360003609790 1133035911900100011001
C620101360 133035911900100007000002012007AMI
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007B
C620101360 133035911900100007000002012007CS
C620101360 133035911900100007000002012007MPC
A620101360003609814 2270016276501200011001
C620101360 270016276501200007000002012007AMI
C620101360 270016276501200007000002012007B
C620101360 270016276501200007000002012007B

Chaque ligne commence par une lettre sauf la première ligne qui est l'entête, le but est que si la ligne commence par un A je mets les données dans une table A et si elle commence par un C je la mets dans une table C ainsi de suite...
Les tables je les crée moi-même
Ensuite chaque ligne rentre dans une table puis sont découpées en petites parties qui vont intégrer chacun un champ, par exemple:

A620101360003609814 2270016276501200011001

A | 620101360 | 0036098 | 1 | 4 | 2270016276501 | 200 | 0 | 11 | 001

Rentre dans la table A

idA | ch1 | ch2 | ch3 | ch4 | ch5 | ch6 | ch7 | ch8 | ch9 | ch10

Si quelqu'un est assez calé en visual basic sous Access, je voudrai bien un petit coup de main pour réaliser cette manip
Je suis preneur de tous types de réponses
Merci d'avance
A voir également:

4 réponses

blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317
29 avril 2008 à 09:30
Salut,

proposition :

- importer les données dans une table temporaire
- lire la table temporaire
- traiter les données de chaque ligne en fonction de tes souhaits pour mettre à jour les tables A, B, C...

Y'en a pour une centaine de lignes de VBA (si la fonction d'éclatement de la ligne n'est pas trop alambiquée)...
0
Avant tout Merci pour ta réponse,

Je vois que tu veux importer mon fichier txt dans une table temporaire mais comment veux tu t'y prendre
Déjà mon fichier txt fait 37000 lignes.
Tu crois qu'il faudrait mettre chaque ligne dans un champ différents si il commence par un C ou un A ???

Merci d'avance
0
blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317
29 avril 2008 à 11:31
Une simple commande type DoCmd.TransferText avec quelques paramètres mettra ton fichier dans une table temporaire.

Ensuite, il faudra lire cette table (idéalement via un recordset), puis extraire les données qui t'intéressent selon les critères que tu as choisi pour les mettre dans les bonnes tables...

Tu crois qu'il faudrait mettre chaque ligne dans un champ différents si il commence par un C ou un A ???
C'est toi qui décide de ce que tu veux faire des données !!!
0
seblekiller_oupas Messages postés 397 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 13 juin 2008 5
29 avril 2008 à 11:48
desole de m'introduire ici mais c'est juste pour savoir si blux pouvais m'aider ou pas (voir pb dans la liste) voila merci qd mm
0
C'est bon j'ai réussi à mettre le texte dans une table temporaire
Mais maintenant je voudrais savoir comment tu fais pour découper chaque ligne et prendre les informations que je veux pour les mettre dans un champ de la table A
Merci d'avance
0
blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317 > maximesm
30 avril 2008 à 09:42
Il faut donc lire le contenu de ta table avec un recordset, faire les opérations de découpage des données, puis ajouter les données à la table 'cible'.

Un bout d'exemple (à adapter) :
Set Rs0 = CurrentDb.OpenRecordset("Tempo", dbOpenTable, dbReadOnly)
Set rs = CurrentDb.OpenRecordset("table_cible", dbOpenTable, dbAppendOnly)
Rs0.Movefirst
Do
    Var = Rs0!champ_de_la_table_tempo
    With rs
        .AddNew
        !champ1_de_la_table_cible = Trim(Mid(Var, 1, 6))
        !champ2_de_la_table_cible = Trim(Mid(Var, 8, 35))
        .....
        .Update
    End With
    Rs0.MoveNext
Loop While Not Rs0.EOF
--

A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
maximesm > blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024
30 avril 2008 à 10:19
Merci pour tout,
Mais c'est bizarre quand je fais créer un nouveau module et que je tape un code dedans et ensuite je l'execute il me demande de créer une macro tu sais pas comment on exécute un code ??
Merci d'avance
0
blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317 > maximesm
30 avril 2008 à 10:24
On ne fait pas comme ça. Il faut mettre le code sur un bouton dans un formulaire (et non dans un module), comme ça quand tu appuies sur le bouton, il fait les opérations demandées...
0
Merci pour ton aide blux
J'ai réussi à avancer pas mal dans mon code mais maintenant que j'ai découpé le texte je voudrai rajouter une clé primaire à ma table tu sais pas c'est quoi la commande??
Merci d'avance
0
blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317
5 mai 2008 à 15:17
Tu passes ta table en mode 'création', tu sélectionnes une colonne et tu cliques sur la clé dans la barre d'outils : ta colonne est devenue 'clé primaire'.
0
maximesm > blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024
6 mai 2008 à 09:14
Merci bien,
Mais je voulais savoir comment on fait en code vba.
Merci d'avance
0
blux Messages postés 26537 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 20 décembre 2024 3 317 > maximesm
6 mai 2008 à 09:24
Il faut lancer une requête 'ALTER TABLE' avec la clause 'CONSTRAINT'.

Regarde l'aide sur le SQL.
0
Salut blux,
Est ce que tu pourrais me donner le code qui permet d'ajouter un champ qui s'auto incrémente en fonction du nombre de ligne pour faire un champ id et le mettre comme clé primaire? Si tu sais comment faire ça serait sympa
Merci d'avance
0