Visual Basic et access [Résolu]

Signaler
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008
-
BeuheC
Messages postés
16
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
15 juin 2010
-
bonjour à tous
quelqu'un pourrait-il m'aider car je dois mettre àa en place au plus vite pour ma boite. je débute en vb et je vous demande de l'aide en vous remerciant d'avance
en fait je vous explique je dois importer des fichiers textes (plus de 3 millions d'enregistrements) plus de 3 milllions de lignes les importer dans access puis nettoyer la table une fois importer supprimer des pipes supprimer des blancs et convertur un champ texte en num reel double. sachant que je dois faire ça toutes les 2 semaines. j'aimerai un programme, des modules permettant d'optimiser tt ça.
en fait les etapes seraient les suivantes:
- import des fichiers textes
- suppression des colonnes inutiles
- formatage des montants en numerique
- ajouts des données à une table unique

12 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
- lecture des fichiers texte
- nettoyage/formatage
- insertion dans la base de données

tu n'a rien pour débuter, pas ecrit la moindre ligne de code ?

a quoi ressemble ton fichier texte ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
Private Type Enregistrement
S As String
Montant As Single
Npiece As Long
DM As Long
CB As String
End Type

Private Sub Form_Load()
Dim iFile As Integer
Dim sBuffer As String
Dim xsParts() As String
Dim tRec As Enregistrement
iFile = FreeFile
Open "C:\a.txt" For Input As iFile
'# On saute la première ligne
Line Input #iFile, sBuffer
Do Until EOF(iFile)
Line Input #iFile, sBuffer
xsParts = Split(sBuffer, "|")
With tRec
.S = Trim$(xsParts(1))
sBuffer = Trim$(Left$(xsParts(2), Len(xsParts(2)) - 1))
sBuffer = Replace(sBuffer, ".", vbNullString)
sBuffer = Replace(sBuffer, ",", ".")
If Right$(xsParts(2), 1) = "-" Then
.Montant = -Val(sBuffer)
Else
.Montant = Val(sBuffer)
End If
.Npiece = xsParts(3)
.DM = xsParts(4)
.CB = Trim$(xsParts(5))

'# Lecture terminée, insertion dans la base de données
End With
Loop
Close iFile
End Sub
Messages postés
14671
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
1 avril 2020
140
Bonjour

Résurgence de http://www.vbfrance.com/infomsg_VB-ACCESS_1087929.aspx#3

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

salut renfield

oui exactement je n'ai rien comme code comme je te dis je debute

mon fichier texte ressemble à à
| S|Montant       | Nº pièc  |DM|  CB                 |
| S|    7.165,00-|2252783|     3|Dépenses          |
| S|    2.401,53-|2252312|     3|Dépenses          |
| S|    3.525,23-|2251958|     3|Dépenses          |

L'idée serait d'automatiser mon traitement des données:
- importer les fichiers textes
- suppression des colonnes inutiles  (exemple:champ1, champ2)
- formatage du champ montant en numerique (car ds le fichier texte montant est en texte ( car il y ades points alors qu'access seulemnt en decimal)
- réunir tous les fichiers textes importés une fois nettoyés en une table unique.
 
et d'y integrer un formulaire pour simplement cliquer sur un bouton et le traitement lancé

merci pour ton aide
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
En passant, le format est bancal... on évite en général de sortir les montant formattés ainsi... on transmettra plutot

3525.23
ou encore
3 525.23

là, on se retrouve à jongler avec les regional settings
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
à noter que le code ci-dessus n'est qu'un exemple. il n'est absolument pas performant (lecture ligne à ligne de gros fichiers => suicide)

ca te sert de base algorithmique de départ, mais il faut lire tes 52 caractères (+2 pour les sauts de ligne) par blocs, pour limiter les opérations de lecture/ecriture
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

merci encore renfield
et comment faire pour supprimer des colonnes du fichier
et aussi creer un formulaire pour qu'il suffise de cliquer pour lancer le traitement

please aide moi

merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
supprimer les colonnes du fichier ? suffit de les ignorer et de ne pas les insérer dans ta base...
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

ok merci  et pour le formulaire  tu peux m'aider?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
pour placer deux commondialogs ? euh....

regarde sur le site, tu trouveras des exemples.
Messages postés
32
Date d'inscription
lundi 30 janvier 2006
Statut
Membre
Dernière intervention
11 septembre 2008

merci encore desolé de t'avoir pris de ton temps

je vais essayer tant bien que mal à trouver la solution

merci encore
Messages postés
16
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
15 juin 2010

Moi je suis intéressé par la partie insertion des données.
Voir à cette adresse : http://www.vbfrance.com/tutoriaux/BASES-CONNECTER-BASE-DONNEES-ACCESS-AVEC-VB-NET_281.aspx

Question de BeuheC le 05/03/2008

Merci