![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE. |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Membre éclairé
![]() Date d'inscription: janvier 2007
Localisation: Bruxelles - Belgique
Messages: 360
|
Bonjour à tous !
Je me permets à nouveau de faire appel à vous pour m'aider à résoudre un problème à l'aide de vos lumières Je suis dans un formulaire, qui contient des données. Dans ce formulaire, j'ai insérée un sous-formulaire ( les deux tables sont liées ). Sur ce formulaire principal, j'ai un bouton, qui écrit des données dans un fichier texte ( tout cela fonctionne ), sur base de ce code : Code :
Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile(CurrentProject.Path & "\Résultats.txt", True) 'Lignes à écrire a.WriteLine a.WriteLine ("Test de texte" & me.MONCHAMP.Value ) a.Close MsgBox "Le fichier généré a été créé.", vbInformation, "MON APPLICATION" Comment y arriver ? Merci de vos réponses.
__________________
DamKre ![]() Mon forum : http://indigo.xooit.be/ Un responsable informatique finit toujours par être considéré : - soit inutile, puisque ça marche, - soit incompétent, puisque ça marche pas. (Sagesse populaire) Dernière modification par damkre ; 11/10/2008 à 09h55 Motif: Ajout des balises code |
|
|
|
|
|
#2 (permalink) |
![]() ![]() |
Bonjour,
Il faut que tu établisses ce que tu veux écrire à travers une requête. De là, avec un objet Recordset, tu lis ta requête ligne à ligne et tu écris dans ton fichier avant chaque MoveNext. Par contre, la méthode que tu as choisi avec ton fso n'est pas suffisante, il te faut un Textstream avec un paramètre ForAppending. Sinon, tel que tu l'as écris, tu écraseras toujours ton fichier avec la dernière valeur. Argy
__________________
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment... Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Tutoriels : Créer un gestionnaire de Post-It pour vos applications Access et Synchroniser 2 zones de liste dans un formulaire MDB Viewer : Visionneuse Access v3.0 |
|
|
|
|
|
#3 (permalink) | |||
|
Membre éclairé
![]() Date d'inscription: janvier 2007
Localisation: Bruxelles - Belgique
Messages: 360
|
Bonjour !
Je me permets de demande quelques précisions : Citation:
Citation:
Quel code taper en VBA ? Citation:
J'y viendrai dès que ce qui précède sera résolu.
__________________
DamKre ![]() Mon forum : http://indigo.xooit.be/ Un responsable informatique finit toujours par être considéré : - soit inutile, puisque ça marche, - soit incompétent, puisque ça marche pas. (Sagesse populaire) |
|||
|
|
|
|
|
#4 (permalink) |
![]() ![]() |
Oui, dans le code.
Si possible, générique. Par exemple : Code :
Private Sub cmdWriteIntoFile_Click() Dim oFSO As Scripting.FileSystemObject Dim oTextStream As Scripting.TextStream Dim oDB As DAO.Database Dim oRS As DAO.Recordset Dim SQLCommand As String Dim strLine As String Dim strFieldValue As String Dim strFileName As String Dim I As Long Dim F As Long Set oFSO = New Scripting.FileSystemObject strFileName = "C:\_Test\Un fichier.txt" With oFSO Set oTextStream = .CreateTextFile(strFileName, True, False) End With SQLCommand = "SELECT * FROM [Détails commandes complets] _ WHERE [N° commande] = " & Me![N° commande] Set oDB = CurrentDb Set oRS = oDB.OpenRecordset(SQLCommand, dbOpenDynaset) With oRS Do While Not .EOF I = I + 1 For F = 0 To .Fields.Count - 1 strFieldValue = strFieldValue & .Fields(F).Value & ";" Next strLine = strFieldValue oTextStream.WriteLine strLine strFieldValue = vbNullString .MoveNext Loop .Close End With oDB.Close Set oRS = Nothing Set oDB = Nothing End Sub
__________________
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment... Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Tutoriels : Créer un gestionnaire de Post-It pour vos applications Access et Synchroniser 2 zones de liste dans un formulaire MDB Viewer : Visionneuse Access v3.0 |
|
|
|
|
|
#5 (permalink) |
|
Membre éclairé
![]() Date d'inscription: janvier 2007
Localisation: Bruxelles - Belgique
Messages: 360
|
J'ai fait ceci :
Code :
Dim iRst As DAO.Recordset Set iRst = CurrentDb.OpenRecordset("SELECT etc FROM etc WHERE etc ", dbOpenDynaset) While Not iRst.EOF a.WriteLine (MES LIGNES A INSÉRER) iRst.MoveNext Wend iRst.Close Set iRst = Nothing ( J'avais trouvé cela entretemps, en chipotant un peu ) Est-ce tout aussi correct, ou faut-il rectifier quelque chose pour rendre cela plus simple ? Ah, et autre question ( tant qu'on y est) : peut-on prévoir des alignements ( avec par exemple des tabulations ), ou est-ce irréalisable ?
__________________
DamKre ![]() Mon forum : http://indigo.xooit.be/ Un responsable informatique finit toujours par être considéré : - soit inutile, puisque ça marche, - soit incompétent, puisque ça marche pas. (Sagesse populaire) |
|
|
|
|
|
#6 (permalink) |
![]() ![]() |
Oui, on peu prévoir des alignement.
Il te faut formater le champ en fonction de sa longueur au momenet de la lecture et sa longueur désirée et ajouter des espaces à gauche ou à droite selon que c'est un numérique ou une chaîne. Cela s'effectue au moment de la construction de la chaîne "strFieldValue" que je t'ai proposé hier. Il te faut alors créer la fonction qui s'en charge, le mieux étant d'avoir une nomenclature préalable Type, LongueurChamp, LongueurFinale, Alignement. Argy
__________________
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment... Web Site ‡ @Mail Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007 Tutoriels : Créer un gestionnaire de Post-It pour vos applications Access et Synchroniser 2 zones de liste dans un formulaire MDB Viewer : Visionneuse Access v3.0 |
|
|
|
![]() |
![]() |
||
[A-00] Ecriture de données dans un fichier texte
|
||
Offres d'
emploi informatique
sur Lesjeudis.com
|
| Outils de la discussion | |
|
|