Base de donnée

inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007 - 5 mai 2006 à 19:05
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007 - 14 mai 2006 à 18:37
slt, je voudrai savoir, comment sous access je peut remplir une table a partir d'un fichier text.txt. il faudrais que je crée une macro car le fichier .txt est sans cesse remis a jour, dc il faudrais que je crée une macro qui a la demande de l'utilisateur met à jours la table access.


En gros je voudrai avoir une macro qui remplis une table access depuis un fichier .txt

merci

12 réponses

XtremDuke Messages postés 626 Date d'inscription samedi 28 septembre 2002 Statut Membre Dernière intervention 18 mai 2009 4
5 mai 2006 à 22:20
Access a un un assistant pour l'importation de données externes au format txt. Si ca peut t'aider....
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
6 mai 2006 à 14:30
ouai mais cette assistant le fait qu'une fois. Moi il me faut une macro qui le fasse a chaque fois que je clic sur un bouton, qq un sait comment on fait?
0
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
6 mai 2006 à 19:33
salut, voici une solution a ton probleme

ouvre un nouveau projet VB avec trois boutons sur la feuille et colle le code dans ta feuille.

ajoute ensuite la reference suivante a ton projet (menu projet/reference et choisis microsoft activex data objects 2.5 ou superieur si tu as .

ensuite il te faut un fichier texte que j'ai appeler essai.txt (le nom doit etre identique si tu veut que cela marche)
il te faut une base access vide avec une table que j'ai appeler Table1 et qui possede un champs que j'ai appeler donnée. le champs "donnée" est au format texte avec une longueur de 255.

le fichier access doit s'appeler essai.Mdb et tout comme le fichier texte il faut qu'il soit située dans le meme repertoire ou tu sauvegardera ce petit programme.



'************CODE*************************
Public Ct As ADODB.Connection
Public rc As ADODB.Recordset

Private Sub Command1_Click()
Set rc = New ADODB.Recordset
rc.Open "Table1", Ct, adOpenKeyset, adModeReadWrite

Open App.Path & "\essai.txt" For Input As #1
While Not EOF(1)
Line Input #1, a
With rc
.AddNew
!Donnée = a
.Update
End With
Wend
Close #1

MsgBox "Mise a Jour OK"

err:
If err.Number = 53 Then
MsgBox "Fichier essai.txt introuvable"
Exit Sub
End If

End Sub

Private Sub Command2_Click()
Set rc = New ADODB.Recordset
rc.Open "Table1", Ct, adOpenKeyset, adModeReadWrite
While Not rc.EOF
rc.Delete
rc.MoveNext
Wend

MsgBox "Table1 Effacée"
End Sub

Private Sub Command3_Click()
rc.Close
End
End Sub

Private Sub Form_Load()
On Error GoTo err
Set Ct = New ADODB.Connection

Ct.Provider = "Microsoft.Jet.Oledb.4.0"
Ct.ConnectionString = App.Path & "\Essai.Mdb"
Ct.Open

err:
If err.Number = -2147467259 Then
MsgBox "fichier essai.mdb introuvable"
End
End If

End Sub
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
6 mai 2006 à 20:47
Merci bcp, mais est ce que tu peut me mettre des commentaire pour que je puisse modifier ton prog, car mon fichier text a plusieur champs, il y aura une clé primaire et a coté séparé par une virgule ou un point virgule, une date, et dc je voudrais copier ces 2 champs ds ma table
0

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

Posez votre question
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
6 mai 2006 à 21:36
Bon j'ai pas changé grand chose donc je te met juste le code qui a changé.

Public Ct As ADODB.Connection 'Declaration des variables pour se connecter en mode ADO
Public rc As ADODB.Recordset

Private Sub Command1_Click()
Set rc = New ADODB.Recordset 'Declaration d'une nouvelle connection ADO
rc.Open "Table1", Ct, adOpenKeyset, adModeReadWrite 'Ouverture de la table "Table1" de la base essai.Mdb

Open App.Path & "\essai.txt" For Input As #1 'Ouverture du fichier texte en lecture
While Not EOF(1) 'Tant que ce n'est pas la fin du fichier texte
Input #1, a, b 'la valeur a contient la premiere valeur et B la deuxieme valeur du fichier texte
With rc 'les valeurs du fichier texte doivent etre séparer par des ,
.AddNew 'On ajoute un enregistrement dans la table1
!Index = a 'Le champs Index prend la valeur de A
!Heure = b 'Le champs Heure prend la valeur de B
.Update
End With
Wend
Close #1 'On ferme le fichier texte

MsgBox "Mise a Jour OK"

err:
'Si le fichier essai.txt n'est pas trouvé on affiche un message
If err.Number = 53 Then
MsgBox "Fichier essai.txt introuvable"
Exit Sub
End If

End Sub

Private Sub Command2_Click()
Set rc = New ADODB.Recordset 'Declaration d'une nouvelle connection ADO
rc.Open "Table1", Ct, adOpenKeyset, adModeWrite 'Ouverture de la table "Table1" en ecriture seulement
While Not rc.EOF 'On boucle tant que la fin n'est pas arrivée
rc.Delete 'Effacement de l'enregistrement courant
rc.MoveNext 'On passe a l'enregistrement suivant
Wend

MsgBox "Table1 Effacée"
End Sub

Private Sub Command3_Click()
rc.Close 'Fermeture de la connection ADO
End
End Sub

Private Sub Form_Load()
On Error GoTo err
Set Ct = New ADODB.Connection 'Declaration

Ct.Provider = "Microsoft.Jet.Oledb.4.0"
Ct.ConnectionString = App.Path & "\Essai.Mdb" 'Chemin ou se trouve la base access
Ct.Open

err:
If err.Number = -2147467259 Then
MsgBox "fichier essai.mdb introuvable"
End
End If

End Sub
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
7 mai 2006 à 12:26
ok merci bcp ! et au fait est ce que c'est possible de suprimé les données que j'ai écrite ds la table access du fichier text.txt? et aussi comment je peut tester ma table access pour que lorsqu'il y a des doublons, j'écrase l'ancien et je mais la nouvelles donner ds ma table ?
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
7 mai 2006 à 12:28
Et aussi, ds ton programme losrque tu met "ajoute un champs ds la table " cela ajoute un champs sans suprimer ceux qui existe déja ?
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
7 mai 2006 à 12:38
excuse moi d'écrire plusieur msg , mais pourquoi tu utilise le bouton 2? pourquoi tu efface la table1?

je sait pas si c'est possible, mais je voudrais rajouter a la suite les champs qui se trouvent ds mon fichier text.txt.

et aussi à la place des virgule il faudrai que j'utlise qqch d'autre car l'assistant access ne veut pas prendre les virgyule comme séparateur car il exporte des date/heure, je sait pas si c'est importatnt ds ton programme ça.
0
metalcoder Messages postés 193 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 25 mars 2011 1
7 mai 2006 à 13:11
le bouton 2 sert juste a effacer toute la table1 si tu en a besoin. Je vais pas te faire le programme completement, je te donne juste une piste ;-))

le probleme c'est que tu va mettre ton fichier texte dans la table1 mais si tu recommence aussitot apres tu va ajouter a la suite, ce qui va faire plein de doublons dans ta table, c'est pour ca que j'avais mis le bouton 2.

mon programme tel qu'il est fait prend la virgule comme separateur

ex: 154,15/05/2006





tu va avoir le chiffre 154 dans le champs index de la table1


et 15/05/2006 dans le champs heure de la table1





essaye de le modifier, il y a que comme ca que tu va comprendre


Metalcoder
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
7 mai 2006 à 15:14
Merci pour ton aide. je sait tu vas pas me faire ts mon code d'ailleur ça c'est juste une partie mais c essentiel...

Pour éviter les doublon, je voudrais effacé les donner que j'ai importé ds ma table du fichier .txt mais je c'est pas si c'est possible en vba , tu en pense quoi?
Comme ça je créerai un boucle test et si l'index existe déja ben j'écrase l'encien ds ma base de donner et j'aurais pas de doublon. cela m'arengerai ennormément si je pouvais effacer les donner du fichier .txt si tu siat comment on fais merci d'avance
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
9 mai 2006 à 22:07
slt , ton code n emarche pas il me mes une erreur de compilation au niveau

Set rc = New ADODB.Recordset 'Declaration d'une nouvelle connection ADO
rc.Open "Table1", Ct, adOpenKeyset, adModeReadWrite 'Ouverture de la table "Table1"

il me dit que l'opération ne pas étre faite sur ce fichier... je ne sait pas pourquoi, pourtant j'ai mis la référence que tu m'as dit mais ça ne marche pas.

si tu a une autre méthode pour ouvrir en écriture une base ( juste ça pas ts le code ) merci d'avance
0
inconnu2nulpar Messages postés 75 Date d'inscription vendredi 20 janvier 2006 Statut Membre Dernière intervention 16 janvier 2007
14 mai 2006 à 18:37
slt comment on fait pour remplir des combo box sous vba access, parce que en vba excel je fait cobox1.additem "valeur" mais ça ne marche pas sous access, quelqu'un sait comment on fait? merci
0
Rejoignez-nous