IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

extraire les données d'un fichier texte


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut extraire les données d'un fichier texte
    Bonjour, je voudrais récupérer les données d'un fichier texte séparé par des points virgules et attribué à chacune de ces données une variable. comment faire ?

    je sais qu'il faut utiliser la fonction mid (données si ; ) et len (de la chaine) mais je vois pas du tout comment on peut attriuber à une variable la/les données extraites.

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 091
    Points : 16 652
    Points
    16 652
    Par défaut
    Je sais que le sujet a largement été évoquer et qu'une petite recherche sur ce forum permet de trouver la solution.
    Pour preuve, voilà mon premier Script VB , conçut a l'aide d'un des outils (VBS Factory) proposé ICI et de recherche avec les mots: Split, OpenTextFile et MsgBox, mots qu'il faut connaître bien sûr (je programme en VB6 donc des mots en communs).
    J'utilise donc une variable tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
            Dim FSO, LeFichier
    	Dim CheminNomFichier, MeTbl, PourTbl, T
     
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    CheminNomFichier = "C:\PersoFrancis\FichierArray.txt"
    Set LeFichier = fso.OpenTextFile(CheminNomFichier,1)
    PourTbl = LeFichier.ReadAll
    LeFichier.Close
     
    'PourTbl contient: "un;deux;trois;quatres;cinqiéme et dernier;"
    	MeTbl = split(PourTbl,";")
    	for T = 0 to ubound(MeTbl)-1
    	 MsgBox "la variable MeTbl indice(" & T & ") contient: " & MeTbl(T)
    	next
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    J'ai aussi penser à faire un tableau pour séparer les données, mais le problème c'est que je veux à chacune de ces données leur mettre une variable propre.
    ..
    je sais pas si je suis très clair.

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 091
    Points : 16 652
    Points
    16 652
    Par défaut
    mais le problème c'est que je veux à chacune de ces données leur mettre une variable propre
    Ce qui sous entend que le nombre d’éléments dans ton fichier doit être connu et toujours égal.
    Si oui, pourquoi dans ton code, ne pas déclarer ces variables, et attribuer à chacune la variable tableau?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
            Dim Var0, Var1, Var2, Var3, Var4
    ' .......................
    'PourTbl contient: "un;deux;trois;quatres;cinqiéme et dernier;"
    	MeTbl = split(PourTbl,";")
    	'for T =0 to ubound(MeTbl)-1
    	' MsgBox "la variable MeTbl indice(" & T & ") contient: " & MeTbl(T)
    	'next
    	var0 = MeTbl(0)
    	var1 = MeTbl(1)
    	var2 = MeTbl(2)
    	var3 = MeTbl(3)
    	var4 = MeTbl(4)
    	MsgBox "var0 contient: " & var0 & vbcrlf _
    	& "var1 contient: " & var1 & vbcrlf _
    	& "var2 contient: " & var2 & vbcrlf _
    	& "var3 contient: " & var3 & vbcrlf _
    	& "var4 contient: " & var4
    A moins que justement, par ta question, tu cherches à savoir si il est possible de créer des variables différentes par code.

    Moi en VB6 (que je métrise un peu) je ne saurai le faire que par une gymnastique qui serait des plus pénalisante pour la performance du code.
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    c'est bien ça que je veux faire, mais je voudrais incrémenter les variables, exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    MonTableau = Split(Flignefichier,";")  
     
    Nom = MonTableau(0)
    Prenom = MonTableau(1) 
    login = MonTableau(2) 
    MotDePasse = MonTableau(3)
    Supprimer = MonTableau(4)
     
    Nom2 = MonTableau(5)
    Prenom2 = MonTableau(6)
    login2 = MonTableau(7) 
    MotDePasse2 = MonTableau(8)
    Supprimer2 = MonTableau(9)
    mais la faire en sorte qu'a la place du 2 je mette un i+1 pour éviter de mettre nom3, nom4 etc.. meme chose pour le nom du talbeau mettre un i+1 a la place.

    ...ça a l'air bien compliqué mon truc

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par klue_ Voir le message
    ...ça a l'air bien compliqué mon truc
    je confirme..

    pourquoi vouloir passer par des variables intermédiaires et ne pas utiliser directement les variables tableaux..

    autre chose, dans ton fichier texte tes enregistrements sont-'ils tous sur la même ligne ? où bien as tu une ligne par enregistrement...?

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 091
    Points : 16 652
    Points
    16 652
    Par défaut
    Peut être un compromis, avec des variables tableau plus parlantes, qui n'ont d'interet que pour la lecture/maintenance du code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
            Dim FSO, LeFichier
    	Dim CheminNomFichier, PourTbl, TblLigne, TblColonne
            Dim T
            Dim Nom, Prenom, login, MotDePasse, Supprimer
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    CheminNomFichier = "C:\PersoFrancis\FichierNewArray.txt"
    Set LeFichier = fso.OpenTextFile(CheminNomFichier,1)
    PourTbl = LeFichier.ReadAll
    LeFichier.Close
     
    'PourTbl contient:  Dupond;Pierre;TropDur;1234;non
    '                   Tarraga;Mario;SuperFoot;PasseLeMot;oui
    '                   Rodolphe;Vilpierre;Stagiaire;coucou;non
    '                   Wangu;Migum;Admin;abc15;oui
     
            'ajout d'un retour chariot à la derniere ligne pour le Splitage
            PourTbl = PourTbl & vbclrf
    	TblLigne = Split(PourTbl,vbCrLf)
    	'pour obtenire le nombre de ligne
            T = Ubound(TblLigne)
            'dimensionne chaque variable
            redim Nom(T)
            redim Prenom(T)
            redim login(T)
            redim MotDePasse(T)
            redim Supprimer(T)
     
            for T =0 to ubound(TblLigne)
             TblLigne(T) = TblLigne(T) & ";"
             TblColonne = split(TblLigne(T),";")
             Nom(T)= TblColonne(0)
             Prenom(T)= TblColonne(1)
             login(T)= TblColonne(2)
             MotDePasse(T)= TblColonne(3)
             Supprimer(T)= TblColonne(4)
     
    	 MsgBox "Nom(" & T & ") contient: " & Nom(T) & vbcrlf _
    	 & "Prenom(" & T & ") contient: " & Prenom(T) & vbcrlf _
    	 & "login(" & T & ") contient: " & login(T) & vbcrlf _
    	 & "MotDePasse(" & T & ") contient: " & MotDePasse(T) & vbcrlf _
    	 & "Supprimer(" & T & ") contient: " & Supprimer(T)
     
            next
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    C'est bien une ligne par enregistrement.
    et oui je voudrais utiliser la variable des données pour les réutiliser ensuite.

    mais ça fait rien je vais m'en tenir à mon code.

    Merci pour votre aide

Discussions similaires

  1. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 17h51
  2. Réponses: 2
    Dernier message: 22/06/2008, 15h41
  3. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01
  4. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37
  5. extraire certaines données d'un fichier texte
    Par davz88 dans le forum C++
    Réponses: 11
    Dernier message: 26/03/2005, 13h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo