inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 janvier 2007
-
5 mai 2006 à 19:05
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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?
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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 ?
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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.
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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
inconnu2nulpar
Messages postés75Date d'inscriptionvendredi 20 janvier 2006StatutMembreDernière intervention16 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