Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
536 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Lire à partir d'un fichier texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Lire à partir d'un fichier texte

n°426304
Yoyo@
Posté le 13-06-2003 à 12:00:42  profilanswer
 

Salut,
 
je voudrais savoir si il est possible, à partier de VBA, et sans passer par des tables (importation/exportation) de lire/écrire du texte à partir d'un fichier externe....
 
Merci,
 
Yoyo*

mood
Publicité
Posté le 13-06-2003 à 12:00:42  profilanswer
 

n°426336
Yonel
Monde de merde !
Posté le 13-06-2003 à 12:50:29  profilanswer
 

Yoyo@ a écrit :

Salut,
 
je voudrais savoir si il est possible, à partier de VBA, et sans passer par des tables (importation/exportation) de lire/écrire du texte à partir d'un fichier externe....
 
Merci,
 
Yoyo*


 
oui bien sûr, tu peux faire de la gestion de fichier "classique", un peu comme ds les autres langages:
 
Ouverture du fichier -> Open fic for Input/output As #1
lecture d'une ligne -> Line input #1, ligne
écriture -> Print #1,ligne
Fermeture du fichier -> Close #1
 
T'as pleins d'instructions de ce genre pour manipuler les fichiers... ça c celles que j'utilise mais t pas obligé de faire pareil ;)

n°426483
Yoyo@
Posté le 13-06-2003 à 13:53:34  profilanswer
 

Yonel a écrit :


 
oui bien sûr, tu peux faire de la gestion de fichier "classique", un peu comme ds les autres langages:
 
Ouverture du fichier -> Open fic for Input/output As #1
lecture d'une ligne -> Line input #1, ligne
écriture -> Print #1,ligne
Fermeture du fichier -> Close #1
 
T'as pleins d'instructions de ce genre pour manipuler les fichiers... ça c celles que j'utilise mais t pas obligé de faire pareil ;)


 
Super, merci!
 
J'essaie tout ca alors :)

n°426877
MagicBuzz
Posté le 13-06-2003 à 16:12:23  profilanswer
 

Perso, je préfère passer par FSO et la méthode OpenTextFile
 
Mais ça dépends de la structure du fichier...
 
Si c'est du CSV, il vaut mieu utiliser FSO, lire ligne par ligne.
 
Tandis que si c'est un fichier plat (avec champs de taille fixe), il vaut mieu lire avec des read #1, car tu pourras lire directement des records (structures en C), ce qui permet de lire et stocker plusieurs champs d'un coup.
 
Exemple pour le 2 :
 

Code :
  1. Type TYP_TIER_FICHE
  2.     typenr As String * 2
  3.     typmaj As String * 1
  4.     codpev As String * 8
  5.     typtie As String * 3
  6.     sigtie As String * 12
  7.     nomtie As String * 18
  8.     codett As String * 3
  9.     famtie As String * 6
  10.     codbar As String * 3
  11.     codreg As String * 3
  12.     coddev As String * 3
  13.     typrep As String * 3
  14.     sigrep As String * 12
  15.     typgrp As String * 3
  16.     siggrp As String * 12
  17.     dreftar As String * 1
  18.     nbrjour As String * 6
  19.     codlan As String * 3
  20.     modtra As String * 2
  21.     sigdep As String * 12
  22.     sigtra As String * 12
  23.     modliv As String * 3
  24.     delrea As String * 3
  25.     relica As String * 1
  26.     cpttie As String * 12
  27.     modrgl As String * 2
  28.     delrgl As String * 3
  29.     coddpt As String * 1
  30.     codqua As String * 3
  31.     posfis As String * 1
  32.     nombqe As String * 24
  33.     codbqe As String * 5
  34.     guiche As String * 5
  35.     cptbqe As String * 11
  36.     clerib As String * 2
  37.     encass As String * 12
  38.     encmax As String * 12
  39.     codinc As String * 2
  40.     tauesc As String * 6
  41.     perfac As String * 1
  42.     nbrfac As String * 1
  43.     facrel As String * 1
  44.     forfai As String * 1
  45.     editrt As String * 1
  46.     edicot As String * 1
  47.     typfac As String * 3
  48.     indref As String * 1
  49.     mincde As String * 12
  50.     minfra As String * 12
  51.     dateve As String * 8
  52.     sigach As String * 12
  53.     datcre As String * 8
  54.     cnufd As String * 6
  55.     numfil As String * 3
  56.     etbcod As String * 3
  57.     etsstatut As String * 1
  58.     p_tietcp As String * 3
  59.     p_tiesig As String * 12
  60.     p_ribcodp As String * 3
  61.     p_tiebap As String * 1
  62.     p_tieintgr As String * 5
  63.     p_3fccod As String * 6
  64.     p_3g1cod As String * 3
  65.     p_3g2cod As String * 3
  66.     p_3g3cod As String * 3
  67.     p_3g4cod As String * 3
  68.     p_3g5cod As String * 3
  69.     moyrgl As String * 3
  70.     P_tiegrp As String * 3
  71.     Sigtrs As String * 12
  72.     LF As String * 2
  73. End Type
  74.     Dim tTierFiche As TYP_TIER_FICHE
  75.        
  76.     With tTierFiche
  77.         .typenr = "70"
  78.         .typmaj = "1"
  79.         .codpev = "GCLI"
  80.         .typtie = "CLI"
  81.         .sigtie = sSigleDuTier
  82.         .nomtie = UCase(sNomDuTier)
  83.         .codett = "CUS"
  84.         .famtie = UCase(sFamilleTier)
  85.         .codbar = ""
  86.         .codreg = ""
  87.         .coddev = UCase(sCodeDev)
  88.         .typrep = "REP"
  89.         .sigrep = sSigrep
  90.         .typgrp = ""
  91.         .siggrp = ""
  92.         .dreftar = "C"
  93.         .nbrjour = "000000"
  94.         .codlan = sCodLan '22/08/2000 Mod 2 : formely .codlan = ""
  95.         .modtra = ""
  96.         .sigdep = ""
  97.         .sigtra = ""
  98.         .modliv = ""
  99.         .delrea = "000"
  100.         .relica = "O"
  101.         .cpttie = "C00000" & sSigleDuTier
  102.         .modrgl = "CB"
  103.         .delrgl = "000"
  104.         .coddpt = ""
  105.         .codqua = "000"
  106.         .posfis = UCase(sPosfis)
  107.         .nombqe = ""
  108.         .codbqe = ""
  109.         .guiche = ""
  110.         .cptbqe = ""
  111.         .clerib = ""
  112.         .encass = "000000000.00"
  113.         .encmax = GetEntier12GeneriX(sP_3fcencmx, 1)
  114.         .codinc = ""
  115.         .tauesc = "000.00"
  116.         .perfac = sPerfac
  117.         .nbrfac = sNbrfac
  118.         .facrel = "N"
  119.         .forfai = "N"
  120.         .editrt = "N"
  121.         .edicot = "N"
  122.         .typfac = sTypfac
  123.         .indref = "N"
  124.         .mincde = "000000000.00"
  125.         .minfra = "000000000.00"
  126.         .dateve = ""
  127.         .sigach = ""
  128.         .datcre = sDateCrea
  129.         .cnufd = ""
  130.         .numfil = "000"
  131.         .etbcod = UCase(sEtbcod)
  132.         .etsstatut = "1"   '22/08/2000 Mod 3 : formely .etsstatut = ""
  133.         .p_tietcp = "CLI"
  134.         .p_tiesig = sSigleDuTier
  135.         .p_ribcodp = ""
  136.         .p_tiebap = "0"
  137.         .p_tieintgr = "00000"
  138.         .p_3fccod = sP_3fccod
  139.         .p_3g1cod = sP_3fcg1cod
  140.         .p_3g2cod = sP_3fcg2cod
  141.         .p_3g3cod = ""
  142.         .p_3g4cod = ""
  143.         .p_3g5cod = ""
  144.         .moyrgl = "000"
  145.         .P_tiegrp = UCase(P_tiegrp) ' 12/07/2001 : Adding "P_tiegrp"
  146.         .Sigtrs = UCase(Sigtrs)     ' 12/07/2001 : Adding "Sigtrs"
  147.         .LF = END_LINE
  148.     End With
  149.    
  150.     Put #ifichier, , tTierFiche


 
Vachement pratique :)


Message édité par MagicBuzz le 13-06-2003 à 16:12:45
n°427042
Yoyo@
Posté le 13-06-2003 à 18:46:43  profilanswer
 

MagicBuzz a écrit :

Perso, je préfère passer par FSO et la méthode OpenTextFile
 
Mais ça dépends de la structure du fichier...
 
Si c'est du CSV, il vaut mieu utiliser FSO, lire ligne par ligne.
 
Tandis que si c'est un fichier plat (avec champs de taille fixe), il vaut mieu lire avec des read #1, car tu pourras lire directement des records (structures en C), ce qui permet de lire et stocker plusieurs champs d'un coup.
 
Exemple pour le 2 :
 

Code :
  1. Type TYP_TIER_FICHE
  2.     typenr As String * 2
  3.     typmaj As String * 1
  4.     codpev As String * 8
  5.     typtie As String * 3
  6.     sigtie As String * 12
  7.     nomtie As String * 18
  8.     codett As String * 3
  9.     famtie As String * 6
  10.     codbar As String * 3
  11.     codreg As String * 3
  12.     coddev As String * 3
  13.     typrep As String * 3
  14.     sigrep As String * 12
  15.     typgrp As String * 3
  16.     siggrp As String * 12
  17.     dreftar As String * 1
  18.     nbrjour As String * 6
  19.     codlan As String * 3
  20.     modtra As String * 2
  21.     sigdep As String * 12
  22.     sigtra As String * 12
  23.     modliv As String * 3
  24.     delrea As String * 3
  25.     relica As String * 1
  26.     cpttie As String * 12
  27.     modrgl As String * 2
  28.     delrgl As String * 3
  29.     coddpt As String * 1
  30.     codqua As String * 3
  31.     posfis As String * 1
  32.     nombqe As String * 24
  33.     codbqe As String * 5
  34.     guiche As String * 5
  35.     cptbqe As String * 11
  36.     clerib As String * 2
  37.     encass As String * 12
  38.     encmax As String * 12
  39.     codinc As String * 2
  40.     tauesc As String * 6
  41.     perfac As String * 1
  42.     nbrfac As String * 1
  43.     facrel As String * 1
  44.     forfai As String * 1
  45.     editrt As String * 1
  46.     edicot As String * 1
  47.     typfac As String * 3
  48.     indref As String * 1
  49.     mincde As String * 12
  50.     minfra As String * 12
  51.     dateve As String * 8
  52.     sigach As String * 12
  53.     datcre As String * 8
  54.     cnufd As String * 6
  55.     numfil As String * 3
  56.     etbcod As String * 3
  57.     etsstatut As String * 1
  58.     p_tietcp As String * 3
  59.     p_tiesig As String * 12
  60.     p_ribcodp As String * 3
  61.     p_tiebap As String * 1
  62.     p_tieintgr As String * 5
  63.     p_3fccod As String * 6
  64.     p_3g1cod As String * 3
  65.     p_3g2cod As String * 3
  66.     p_3g3cod As String * 3
  67.     p_3g4cod As String * 3
  68.     p_3g5cod As String * 3
  69.     moyrgl As String * 3
  70.     P_tiegrp As String * 3
  71.     Sigtrs As String * 12
  72.     LF As String * 2
  73. End Type
  74.     Dim tTierFiche As TYP_TIER_FICHE
  75.        
  76.     With tTierFiche
  77.         .typenr = "70"
  78.         .typmaj = "1"
  79.         .codpev = "GCLI"
  80.         .typtie = "CLI"
  81.         .sigtie = sSigleDuTier
  82.         .nomtie = UCase(sNomDuTier)
  83.         .codett = "CUS"
  84.         .famtie = UCase(sFamilleTier)
  85.         .codbar = ""
  86.         .codreg = ""
  87.         .coddev = UCase(sCodeDev)
  88.         .typrep = "REP"
  89.         .sigrep = sSigrep
  90.         .typgrp = ""
  91.         .siggrp = ""
  92.         .dreftar = "C"
  93.         .nbrjour = "000000"
  94.         .codlan = sCodLan '22/08/2000 Mod 2 : formely .codlan = ""
  95.         .modtra = ""
  96.         .sigdep = ""
  97.         .sigtra = ""
  98.         .modliv = ""
  99.         .delrea = "000"
  100.         .relica = "O"
  101.         .cpttie = "C00000" & sSigleDuTier
  102.         .modrgl = "CB"
  103.         .delrgl = "000"
  104.         .coddpt = ""
  105.         .codqua = "000"
  106.         .posfis = UCase(sPosfis)
  107.         .nombqe = ""
  108.         .codbqe = ""
  109.         .guiche = ""
  110.         .cptbqe = ""
  111.         .clerib = ""
  112.         .encass = "000000000.00"
  113.         .encmax = GetEntier12GeneriX(sP_3fcencmx, 1)
  114.         .codinc = ""
  115.         .tauesc = "000.00"
  116.         .perfac = sPerfac
  117.         .nbrfac = sNbrfac
  118.         .facrel = "N"
  119.         .forfai = "N"
  120.         .editrt = "N"
  121.         .edicot = "N"
  122.         .typfac = sTypfac
  123.         .indref = "N"
  124.         .mincde = "000000000.00"
  125.         .minfra = "000000000.00"
  126.         .dateve = ""
  127.         .sigach = ""
  128.         .datcre = sDateCrea
  129.         .cnufd = ""
  130.         .numfil = "000"
  131.         .etbcod = UCase(sEtbcod)
  132.         .etsstatut = "1"   '22/08/2000 Mod 3 : formely .etsstatut = ""
  133.         .p_tietcp = "CLI"
  134.         .p_tiesig = sSigleDuTier
  135.         .p_ribcodp = ""
  136.         .p_tiebap = "0"
  137.         .p_tieintgr = "00000"
  138.         .p_3fccod = sP_3fccod
  139.         .p_3g1cod = sP_3fcg1cod
  140.         .p_3g2cod = sP_3fcg2cod
  141.         .p_3g3cod = ""
  142.         .p_3g4cod = ""
  143.         .p_3g5cod = ""
  144.         .moyrgl = "000"
  145.         .P_tiegrp = UCase(P_tiegrp) ' 12/07/2001 : Adding "P_tiegrp"
  146.         .Sigtrs = UCase(Sigtrs)     ' 12/07/2001 : Adding "Sigtrs"
  147.         .LF = END_LINE
  148.     End With
  149.    
  150.     Put #ifichier, , tTierFiche


 
Vachement pratique :)


 
Euh, FSO, c'est quoi?  
 
Et dans ton code, tu fais quoi?
 
Sinon, si mon fichier était du CSV, je l'aurais directement importé dans une table !  C'est un fichier que j'éditerai à la main et que j'analyserai avec du code, donc à la fois avec un formatage spécial (pour qu'il soit analysable) et lisible (pour qu'il soit éditable à la main, et agréable à lire!)

n°427231
MagicBuzz
Posté le 13-06-2003 à 23:07:38  profilanswer
 

FSO : FileSystemObject
 
C'est un objet de WSH (Windows Scripting Host) qui est très performant et assez pratique.
 
Cherche de l'aide dessus, perso, mise à par quand il faut un accès binaire, j'utilise toujours cet objet qui est très simple et très puissant dès que je dois accéder au système de fichier.
Dedans, très à peut près toutes les fonctions que tu peux avoir dans l'explorateur Windows : ça va de l'accès réseau à l'identification du type de FS sur les disques, en passant par la manipulation de répertoires ou l'accès à des fichiers en mode texte (n'importe quel charset)
 
Sinon, dans le code que j'ai posté, en fait je crée un type utlisateur "struct".
 
Par exemple :
 

Type T_PERSONNE
    nom as String * 32
    prenom as string * 32
    email as string 64
    sexe as string * 1
    age as string * 2
End Type


 
Ensuite, je remplis la structure avec des infos :
 

Dim personne as T_PERSONNE
with personne
    .nom = "Durant"
    .prenom = "André"
    .email = "andre.durant@free.fr"
    .sexe = "M"
    .age = cstr(32)
end with


 
Puis j'écrit le record dans le fichier en mode binaire :
 

Put #1, , personne


 
=> Il en résulte dans le fichier :
 

Durant                          André                           andre.durant@free.fr                                            M32


 
Et je peux ensuite relire le record :
 

Get #1, , personne


 
=> Ma variable "personne" se rempli automatiquement avec tous les champs. C'est carrément super pratique pour bosser avec des fichiers plats.

n°427233
Yonel
Monde de merde !
Posté le 13-06-2003 à 23:10:34  profilanswer
 

MagicBuzz a écrit :

FSO : FileSystemObject
 
C'est un objet de WSH (Windows Scripting Host) qui est très performant et assez pratique.
 
....
 
 C'est carrément super pratique pour bosser avec des fichiers plats.


 
j'avoue que ça a l'air puissant... pkoi t'as pas posté ça 2 mois plus tôt :cry: ?

n°427240
MagicBuzz
Posté le 13-06-2003 à 23:13:49  profilanswer
 

Bah parceque on lme l'a pas demandé :D

n°427241
MagicBuzz
Posté le 13-06-2003 à 23:14:29  profilanswer
 

PS: le coup des record, ça n'a rien à voir avec FSO, là c'est la fonction native que VB, qui n'a que cet intérêt, pour le reste elle est toute pourrie.

n°427273
MagicBuzz
Posté le 13-06-2003 à 23:44:01  profilanswer
 

Sinon, quand je dis que FSO est TRES performant, je m'en remet à ça : (ça mérite évolution, mais ça donne déjà une bonne idée de la puissance du truc et de sa rapidité)
 

Code :
  1. sub exportList(fic, fol, lvl)
  2. dim str
  3. dim i
  4. dim f
  5. for i = 0 to lvl
  6.  str = str & "  "
  7. next
  8. for each f in fol.SubFolders
  9.  fic.WriteLine str & f.name
  10.  exportList fic, f, lvl + 1
  11. next
  12. for each f in fol.Files
  13.  fic.WriteLine str & f.name
  14. next
  15. end sub
  16. dim fso, drv, fil
  17. dim freeSpace, totalSpace
  18. dim startime, endtime, mytime
  19. set fso = CreateObject("Scripting.FileSystemObject" )
  20. startime = Timer
  21. set drv = fso.GetDrive("h:" )
  22. freeSpace = drv.FreeSpace
  23. totalSpace = drv.TotalSize
  24. set fil = fso.CreateTextFile("c:\liste.txt", true, false)
  25. fil.WriteLine "Disk size : " & totalSpace
  26. fil.WriteLine "Used      : " & ((totalSpace - freeSpace) / totalSpace) * 100 & " %"
  27. on error resume next ' Avoid errors due to permission limitation
  28. exportList fil, fso.GetFolder(drv.RootFolder), 0
  29. on error goto 0
  30. endtime = timer
  31. mytime = endtime - startime
  32. fil.WriteLine
  33. fil.WriteLine "Temps d'éxécution : " & mytime & " secondes"
  34. fil.Close
  35. msgbox "fini !"


 
Enregistre ça dans un fichier *.vbs et fait-le tourner (change au besoin le lecteur g:, c'est chez moi un disque de 80 Go remplis à raz-bord de MP3 et drivers)
 
Temps d'éxécution : 5 secondes et demie.
 
Quand je fais un clic droit dans l'explorateur Windows pour afficher les propriétés du répertoire racine, j'attends plus de 20 secondes :)
(je parle même pas de faire un dir g: /s > liste.txt ;))


Message édité par MagicBuzz le 13-06-2003 à 23:44:29
mood
Publicité
Posté le 13-06-2003 à 23:44:01  profilanswer
 

n°427283
Yonel
Monde de merde !
Posté le 13-06-2003 à 23:53:11  profilanswer
 

MagicBuzz a écrit :


 
...
 
Enregistre ça dans un fichier *.vbs et fait-le tourner (change au besoin le lecteur g:, c'est chez moi un disque de 80 Go remplis à raz-bord de MP3 et drivers)
 
Temps d'éxécution : 5 secondes et demie.
 
Quand je fais un clic droit dans l'explorateur Windows pour afficher les propriétés du répertoire racine, j'attends plus de 20 secondes :)
(je parle même pas de faire un dir g: /s > liste.txt ;))


 
ah vi sympatique. ton script met moins de 4s chez moi pour une partition de 100Go. Par contre c bizarre parce que les propriétés de la racine sont instantanées chez moi. Ptet parce que t'as plein de ptits fichiers  :??:

n°427287
MagicBuzz
Posté le 13-06-2003 à 23:58:38  profilanswer
 

Non, sélectionne tous les répertoires à la racine puis fait propriété (pour voir le détail)
 
Sinon, il se contente de regarder le type de fs et la taille dispo ;)

n°427289
Yonel
Monde de merde !
Posté le 14-06-2003 à 00:00:27  profilanswer
 

MagicBuzz a écrit :

Non, sélectionne tous les répertoires à la racine puis fait propriété (pour voir le détail)
 
Sinon, il se contente de regarder le type de fs et la taille dispo ;)


 
oui c vrai mais même ça c instantané chez moi. ça doit être parce que t'as plein de ptits fichiers. Moi c des gros... 700Mo chacun à peu près  :whistle:

n°427293
MagicBuzz
Posté le 14-06-2003 à 00:02:41  profilanswer
 

Bah ouais, moi j'ai des MP3, c'est 100 fois plus petit que des DivX :D


Message édité par MagicBuzz le 14-06-2003 à 00:02:57
n°427300
MagicBuzz
Posté le 14-06-2003 à 00:04:57  profilanswer
 

PS: Tiens, oui, c'est chelou :??:
 
En fait, j'avais pas regardé... Avec Windows 2003, c'est instantanné !
 
Alors qu'avec Windows 2000, ct super long :??:

n°427304
Yonel
Monde de merde !
Posté le 14-06-2003 à 00:07:55  profilanswer
 

MagicBuzz a écrit :

Bah ouais, moi j'ai des MP3, c'est 100 fois plus petit que des DivX :D

 
 
qui a dit que c'était des divx [:meganne] ?

n°427306
Yonel
Monde de merde !
Posté le 14-06-2003 à 00:09:21  profilanswer
 

MagicBuzz a écrit :

PS: Tiens, oui, c'est chelou :??:
 
En fait, j'avais pas regardé... Avec Windows 2003, c'est instantanné !
 
Alors qu'avec Windows 2000, ct super long :??:


 
ouep je sais pas... ya ossi le fait que je suis en NTFS, ça c'est un truc qui t'accélère ce genre de traitements... par contre le fait que ce soit plus rapide selon l'OS je vois pas vraiment ou serait la logique  :??:


Message édité par Yonel le 14-06-2003 à 00:11:49
n°427819
MagicBuzz
Posté le 15-06-2003 à 09:03:24  profilanswer
 

Moi aussi je suis en NTFS.
 
Bah selon l'OS, ce sera plus ou moins rapide tout simplement parceque pour la NTFS justement, elle évolue à chaque sortie d'OS.
 
La NTFS 5 (Windows 2000) ne stockait pas d'infos quant au nombre de fichiers contenus dans un répertoire ni leur taille. Du coup, il fallait lire les infos de chaque fichier pour retrouver la taille d'un répertoire.
Visiblement, avec XP/2003 (NTFS 5.1) ils ont rajouté cette information au niveau du répertoire lui-même, ce qui fait que c'est instantané à lire.

n°429506
Yoyo@
Posté le 16-06-2003 à 16:12:57  profilanswer
 

Salut !
 
Je viens d'essayer tes méthodes avec les FSO, en exécutant le tout sous Access ! powerful !
 
En fait, ca vient d'ou tout ca? Ce sont des objects Windons? Bien sur, je ne trouve rien concernant tout ca dans l'aide Access (normal...)
 
Pour ma part, ce que je voudrais, c'est pouvoir utiliser un texte édité à la main (a priori, ce sera une liste quelconque) et pourvoir lire ligne par ligne, par exemple dans uene boucle (mais peu importe) et pour chaque ligne, la mettre dans une String pour l'analyser sous VB (par exemple, si je trouve certains caratceres de formatage, alors je pourrais faire des déductions, etc....)
 
Concernant le FSO, je suis sous XP (Access Xp + Windows XP) ! Si j'utilise un tel object, est ce que je serai sur que ca tournea par exemple sous Win98 + Access97?
 
Que me conseilles tu alors?

n°429644
MagicBuzz
Posté le 16-06-2003 à 17:19:34  profilanswer
 

FSO est un objet de WSH.
 
WSH est la couche de script de Windows.
 
FSO nécessite la version 5.1 de WSH.
 
Cette version est intégrée à IE4, donc Windows 98 en natif, et Windows 95 une fois IE4 installé :)
 
Donc en gros : oui, ça tournera sur n'importe quelle machine.
 
Sinon, si c'est pour lire ligne par ligne, alors à nouveau c'est FSO qui va te servir (et pourtant, dieu sait s'il est limité pour ce qui est des accès fichiers ;))
 
dim fso, fil
dim maligne
set fso = createobject("Scripting.FileSystemObject" )
set fil = fso.OpenTextFile("c:\toto.txt", je sais plus les paramètres)
do while not fil.EndOfStream
   msgbox(fil.readline)
loop
fil.close
 


Message édité par MagicBuzz le 16-06-2003 à 17:21:43
n°429904
Yoyo@
Posté le 16-06-2003 à 21:56:31  profilanswer
 

MagicBuzz a écrit :

FSO est un objet de WSH.
 
WSH est la couche de script de Windows.
 
FSO nécessite la version 5.1 de WSH.
 
Cette version est intégrée à IE4, donc Windows 98 en natif, et Windows 95 une fois IE4 installé :)
 
Donc en gros : oui, ça tournera sur n'importe quelle machine.
 
Sinon, si c'est pour lire ligne par ligne, alors à nouveau c'est FSO qui va te servir (et pourtant, dieu sait s'il est limité pour ce qui est des accès fichiers ;))
 
dim fso, fil
dim maligne
set fso = createobject("Scripting.FileSystemObject" )
set fil = fso.OpenTextFile("c:\toto.txt", je sais plus les paramètres)
do while not fil.EndOfStream
   msgbox(fil.readline)
loop
fil.close
 
 


 
Merci pour ton aide !
 
J'ai finalement utilisé un truc du genre :
 
Open "c:\Essai.txt" For Input As #1
Line Input #1, myString
...
Close #1
 
Ca marche très bien pour ce que je veux en faire, et ca engloutit les lignes les unes apres les autres! (une ligne étant séparée dune autre par un Chr(13) ou un Chr(13)&Chr(10)
 
Voilà,
 
Yoyo*
 
 :hello:  

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Lire à partir d'un fichier texte

 

Sujets relatifs
[Visual C++] Definir le texte d'un "static text" controlEcriture de String ds un fichier, puis lecture et affichage ds une fen
[PHP] nom de variables formée a partir d'autres variables[VBA] - Incompatibilité Excel 2000 --> Excel Xp.
[VBA Excel] Que renvoit open qd l'ouverture du fichier échoue?[C] Problème de lecture dans un fichier
problem effacer contenu d'un fichier puis réécrire dedans...dans quel fichier se trouve le copyright phpBB ?
Texte déroulant 
Plus de sujets relatifs à : [VBA] Lire à partir d'un fichier texte



Copyright © 1997-2014 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC