Recupérer données TXT par VB ?

Résolu
Utilisateur anonyme -  
alexandretlse Messages postés 35 Statut Membre -
Bonjour, voila le probleme que je pose sur ce site :
Pour ma part, je suis en BTS Informatique de Gestion en 1ere année... Je doit faire une action pro dans une entreprise, je l'ai donc commencé je suis allé voir le patron, qui veut que je crée un espece de programme qui lui permetrait d'entrer des adresses de maisons et de les imprimer directement, sans passer par word et tout, sur des enveloppes...Il veut pouvoir mettre des commentaires pour chaques maison...
Je pensais utiliser une base de donnée mais je ne saurais pas l'utiliser apres... a part en php et html... Donc je suis parti sur l'idée de créer un fichier .txt avec VB qui stockerais les données des maisons (je suis entrain d'etudié ca en ce moment en cours c'est pour ca que j'ai eu l'idée :-)...) Seulement voila je bloc, a ce moment je ne sais pas comment recuperer les données que j'ai rentré dans le fichier .txt...
Voila je vais arreter pour les questions et les explications (c'est tout de même a moi de faire le programme ;-)...)
Si vous pouvez au moins me mettre sur la voix, me dire si je fais bien de passer par VB ou si il y a mieux a faire avec une base de donnée...Me diriger vers un tuto pour recuperer des donnée dans un fichier .txt ou bien m'envoyer un bout de code...
Merci beaucoup a tout ceux qui repondrons et merci quand meme a ceux qui ne ferons que passer par ce topic....
Arthur
Configuration: Windows XP
Firefox 1.5.0.9

5 réponses

  1. Utilisateur anonyme
     
    re:

    Tiens, voilà un exemple complet que j'ai codé sous VB6.

    Tu y trouveras 2 boutons pour lire, et 2 boutons pour écrire.

    Méthode avec les objets de scripting (Natif sous WindowsXP)
    Méthode VB6 avec la librairie RunTime de VB6.

    http://membre.oricom.ca/lupin/xfr/chemin.zip

    Cdt

    Lupin
    1
    1. alexandretlse Messages postés 35 Statut Membre 7
       
      Salut,
      Tt d'abord merci. J'ai réussi a faire un truc avec ce que tu m'as envoyé et j'arrivais pas à faire un .exe avec VB 2008. J'ai fini par trouver une astuce d'un gars en prenant le fichier:

      toto.exe.deploy => toto.exe (en changeant l'extension seulement)

      Mais je suis confronter à un autre pb c'est l'ordi sur lequel je veux faire tourner mon programme il m'affiche ca: "Please set registry key HKLM\Software\Microsoft\.NETFramework\InstallRoot to point to the .NET Framework install location".
      As tu une idée de ce que ca peut etre?
      Je ne peux pas faire de MAJ de window (sachant que l'ordi a un windows2000) ni installer de logiciel sur cet ordi car il est uniquement dédié à une application.
      Merci.
      0
    2. Utilisateur anonyme
       
      re :

      En effet, il te faut installer le FrameWork.Net 3.5 sur ton W2K.

      n.b. Ce n'est pas vraiment un logiciel mais une librairie de DLL, d'objects, etc ...

      Sous VB2008, il n'y a pas d'autres choix !

      Cdt

      Lupin
      0
    3. alexandretlse Messages postés 35 Statut Membre 7
       
      Merci je savais que tu aurais la réponse, en revanche je ne peux pas installer FrameWork bien que ce ne soit pas un logiciel. Ceux sont des ordinateurs destinés à des installations de sécurité et on ne peut rien faire c'est au point de vue réglement que ça bloque.
      En revanche est ce que je pourrais trouver un devellopeur VB antérieur a 2008 susceptible de fonctionner avec mon petit programme moyenant quelque modifications?
      Encore merci.
      0
    4. Utilisateur anonyme
       
      re:

      Dans un tel cas, je ne vois que le VBS (Visual Basic Scripting) qui pourrait
      t'accomoder. Car même sous VB6, VB5 ... la DLL du "run time" s'installera
      lors du déploiment de l'application.

      J'ai moi-même programmer tout une série de script en VBS pour la maintenance
      de la solution "ServiceCenter 6.1.1" étalé sur 6 serveurs. Aucune installation
      n'est requise.

      Dans l'exemple que j'ai déposé le 12 avr 2011 à 17:04, le script est fonctionnel
      si l'extension du fichier est [ *.vbs ]. Les objets de scripting sont aussi natif
      sous W2K. Toutefois tu perderas l'aspect "Formulaire" puisque VBS ne fournit
      pas de formulaire.

      Tu prends le code que j'ai déposé, tu l'enregistre au format "MonScript.vbs",
      et tu pourra ainsi lire le fichier souhaité.

      Cdt

      Lupin
      0
    5. alexandretlse Messages postés 35 Statut Membre 7
       
      Ok merci je vais essayer je te tiens au jus de l'avancement du truc!!!
      Bonne fin de journee.
      0
  2. Utilisateur anonyme
     
    Bon maintenant j'ai un niveau suffisant pour réussir à faire un programme comme celui que j'ai décrit... personne ne m'a répondu c'est bien dommage...
    0
    1. alexandretlse Messages postés 35 Statut Membre 7
       
      Salut ca m'interesse, car je cherche a récuperer ce qui est ecrit en permanence sur un fichier txt donc si tu as une breve de pgm ca seait cool merci.
      0
  3. Utilisateur anonyme
     
    Bonjour,

    Vous pouvez utiliser les objets de scripting sous VB pour lire/écrire
    dans un fichier texte.

    Puisque VBS est un sous ensemble de VB, VB reconnait les instructions
    "VBS".

    Exemple pour lire écrire :

    ' Fichier Lire.vbs
    
      Const ctePourLecture = 1
      Const ctePourEcrire = 2
      Const ctePourAjouter = 8
      Const cteRapport = "Rapport.txt"
    
      Dim objFSO, objFichier, varNomFic, Texte, Message
    
      Set objFSO = CreateObject("Scripting.FileSystemObject")
    
      ' Localisation du script et du fichier à lire
      varNomFic = WScript.ScriptFullName
      varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
      varNomFic = varNomFic & cteRapport
    
      If ( objFSO.FileExists(varNomFic) ) Then
        Set objFichier = objFSO.OpenTextFile(varNomFic,ctePourAjouter)
      Else
        Set objFichier = objFSO.CreateTextFile(varNomFic,ctePourEcrire)
      End If
    
      While Not objFichier .AtEndOfStream
            Texte = objFichier .ReadLine
            Message = Message & vbCrLf & Texte
      Wend
      objFichier.Close
    
      Set objFichier = Nothing
      Set objFSO = Nothing
    
      WScript.Echo Message
    
    WScript.Quit(0)
    '
    '----------------------------------------------------------------------------------------------------------------------------------------------
    ' Fichier Ecrire.vbs
    
      Const ctePourLecture = 1
      Const ctePourEcrire = 2
      Const ctePourAjouter = 8
      Const cteRapport = "Rapport.txt"
    
      Dim objFSO, objFichier, varNomFic
    
      Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ' Localisation du fichier à écrire
      varNomFic = WScript.ScriptFullName
      varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
      varNomFic = varNomFic & cteRapport
    
     ' Valide si fichier existe 
      If ( objFSO.FileExists(varNomFic) ) Then
        Set objFichier = objFSO.OpenTextFile(varNomFic,ctePourAjouter)
      Else
        Set objFichier = objFSO.CreateTextFile(varNomFic,ctePourEcrire)
      End If
    
      ' Écrire dans fichier
      objFichier.WriteLine "Bonjour le monde"
      objFichier.Close
    
      Set objFichier = Nothing
      Set objFSO = Nothing
    
    WScript.Quit(0)
    '----------------------------------------------------------------------------------------------------------------------------------------------
    
    '
    


    En VB, ça donne quelque chose comme :

    Option Explicit
    
    Const ctePourLecture = 1
    Const ctePourEcrire = 2
    Const ctePourAjouter = 8
    Const cteRapport = "Rapport.txt"
    '
    
    Sub LireFichier()
    
      Dim objFSO As Object, objFichier As Object
      Dim varNomFic As String, Texte As String, Message As String
    
      Set objFSO = CreateObject("Scripting.FileSystemObject")
    
      ' Localisation du script et du fichier à lire
      varNomFic = Application.Path
      varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
      varNomFic = varNomFic & cteRapport
    
      If (objFSO.FileExists(varNomFic)) Then
        Set objFichier = objFSO.OpenTextFile(varNomFic, ctePourAjouter)
      Else
        Set objFichier = objFSO.CreateTextFile(varNomFic, ctePourEcrire)
      End If
    
      While Not objFichier.AtEndOfStream
            Texte = objFichier.ReadLine
            Message = Message & vbCrLf & Texte
      Wend
      objFichier.Close
    
      Set objFichier = Nothing
      Set objFSO = Nothing
    
    
    End Sub
    '
    
    Sub Ecrire()
    
      Dim objFSO As Object, objFichier As Object, varNomFic As String
    
      Set objFSO = CreateObject("Scripting.FileSystemObject")
    
    ' Localisation du fichier à écrire
      varNomFic = Application.Path
      varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
      varNomFic = varNomFic & cteRapport
    
     ' Valide si fichier existe
      If (objFSO.FileExists(varNomFic)) Then
        Set objFichier = objFSO.OpenTextFile(varNomFic, ctePourAjouter)
      Else
        Set objFichier = objFSO.CreateTextFile(varNomFic, ctePourEcrire)
      End If
    
      ' Écrire dans fichier
      objFichier.WriteLine "Bonjour le monde"
      objFichier.Close
    
      Set objFichier = Nothing
      Set objFSO = Nothing
    
    End Sub
    '
    


    Cdt

    Lupin
    0
  4. alexandretlse Messages postés 35 Statut Membre 7
     
    bonjour Lupin,

    Tt d'abord merci pour ton aide.
    J'ai encore besoin de tes services. J'ai compilé le code que tu m'as envoyé pour lire un fichier en VB. Je n'ai pas recopié le code pour la solution écrire puisque je n'écrit pas dans le fichier txt. Mais ca servira pour d'autre.

    Pour le code lire il me dit que j'ai deux erreurs:

    'Path' n'est pas un membre de 'System.windows.forms.application
    'Public Property Left() As integer' n'a aucun paramètre et son type de retour ne peut pas etre indexé.

    As tu une idée a tt ca? J'ai cherché mais sans succes!!!
    Merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Utilisateur anonyme
     
    re:

    1er Point :

    L'instruction [ Application.Path ] vient du VBA, j'aurais du me souvenir
    que la syntaxe était différente sous VB.

    Je ne sais s'il s'agit de VB6 ou VB.NET ...

    Sous VB.NET, l'instruction se lit :
    Chemin = Application.ExecutablePath

    Sous VB6, l'instruction se lit :
    Chemin = App.Path

    2è Point :
    L'instruction [Left] dans :
    varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))

    Essai avec la syntaxe suivante :
    varNomFic = Left$(varNomFic, InStrRev(varNomFic, "\"))

    sinon :

    Le groupe d'instruction :
    ' Localisation du script et du fichier à lire
    varNomFic = Application.Path
    varNomFic = Left(varNomFic, InStrRev(varNomFic, "\"))
    varNomFic = varNomFic & cteRapport

    devrait pouvoir être écrite ainsi sous VB6:

    varNomFic = App.Path
    varNomFic = varNomFic & "\" & cteRapport

    Vérifie le chemin avec l'instruction pour ne pas avoir 2 [ \ ] dans le chemin:

    MsgBox varNomFic

    Cdt

    Lupin
    0
    1. alexandretlse Messages postés 35 Statut Membre 7
       
      Salut je me suis permi de le mettre a la sauce VB6 (je t'ai mis des étoiles la ou j'avais des modif si ca t'interesse) et donc voici ce que ca donne il n'y a plus d'erreurs de compil mais j'ai encore un PB c'est le chemin. Il ne trouve pas le bon chemin et je vois pas ou est ce qu'il va chercher ca.


      Public Class Form1

      Const ctePourLecture = 1
      Const ctePourEcrire = 2
      Const ctePourAjouter = 8
      Const cteRapport = "doc.txt"
      '

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

      Dim objFSO As Object, objFichier As Object
      Dim varNomFic As String, Texte As String, Message As String


      objFSO = CreateObject("Scripting.FileSystemObject")

      ' Localisation du script et du fichier à lire

      varNomFic = Application.ExecutablePath '*****

      varNomFic = varNomFic & "\" & cteRapport

      MsgBox(varNomFic)

      If (objFSO.FileExists(varNomFic)) Then
      objFichier = objFSO.OpenTextFile(varNomFic, ctePourAjouter)
      Else
      objFichier = objFSO.CreateTextFile(varNomFic, ctePourEcrire)
      End If

      While Not objFichier.AtEndOfStream
      Texte = objFichier.ReadLine
      TextBox1.Text = TextBox1.Text & vbCrLf & Texte '*****

      End While
      objFichier.Close()

      objFichier = Nothing
      objFSO = Nothing

      End Sub
      End Class
      0
    2. Utilisateur anonyme
       
      re:

      Sous VB6 c'est :

      varNomFic = App.Path
      varNomFic = varNomFic & "\" & cteRapport

      Cdt

      Lupin
      0
    3. alexandretlse Messages postés 35 Statut Membre 7
       
      Non dsl il m'envoie dans le mur en me disant App n'est déclaré.
      Le fichier txt est sur le bureau mais le programme lui ne va a la bonne adresse.
      Merci pour la patience.
      0
    4. Utilisateur anonyme
       
      re:

      J'ai plusieurs projet et ma Bible de VB6 à la maison, je vais regarder
      et te fournir la syntaxe exact.

      Il me faudra un peu de temps.

      Depuis que je fais du VB.NET, je perds ma maîtrise du VB6 :-(

      Cdt

      Lupin
      0
    5. alexandretlse Messages postés 35 Statut Membre 7
       
      Pas de souci c'est déja super cool de m'aider!
      0