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

Macros et VBA Excel Discussion :

Découper des chaînes de caractère d'un fichier et les stocker dans un tableau [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Points : 36
    Points
    36
    Par défaut Découper des chaînes de caractère d'un fichier et les stocker dans un tableau
    Bonjour,

    J'ai un fichier constitué de plusieurs lignes
    Je veux récupérer chaque mot séparer par le vide dans un tableau.

    Voici le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    02/04/2009	09:17:33	Engine version                                              =5300 k
    02/04/2009	09:17:33	DAT version                                                 =5568
    02/04/2009	09:17:33	Number of virus signatures in EXTRA.DAT                     =None
    02/04/2009	09:17:33	Names of viruses that EXTRA.DAT can detect                  =None
    02/04/2009	09:17:30	Scan Started	BXG1DX5WR2D1J\pfsadm	On-Demand Scan
    02/04/2009	09:17:44	Scan Summary	BXG1DX5WR2D1J\pfsadm	Scan Summary
    02/04/2009	09:17:44	Scan Summary	BXG1DX5WR2D1J\pfsadm	Processes scanned    : 0
    02/04/2009	09:17:44	Scan Summary	BXG1DX5WR2D1J\pfsadm
    ******* 
    Scan on remscan_TSCM_Dispatch using 136.129.10.70\pfsadm compleated on 
     04-02-2009  09:17:46  Thursday
    *******
    Voici mon 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
    Public Sub LectureFichierTexte(NomFichier As String)
    Dim TabMots() As String
    
    Dim Chemin As String
    Dim i As Integer
    
    Chemin = ThisWorkbook.Path & "\Virus_Reports\rvs-" & NomFichier & ".txt"
    i = 0
      ' Ouverture de Tagada.ini en lecture. S'il n'existe pas, une erreur est générée
      ' S'il existe, il est lu ligne par ligne :
      Open Chemin For Input As #1
      While EOF(1) = False
        Line Input #1, LigneSuivante
        TabMots = Split(LigneSuivante, " ")
        MsgBox TabMots(i)
      Wend
      Close #1
    End Sub
    En affichant la valeur de TabMots, je n'arrive pas à avoir le résultat désiré comme ci-dessous.

    Exemple: Pour les deux premières lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    TabMots(0)= "02/04/2009"
    TabMots(1)= "09:17:33"
    TabMots(2)= "Engine version"
    TabMots(3)= "=5300" 
    TabMots(4)= "k"	
    TabMots(5)= "02/04/2009"
    TabMots(6)= "09:17:33"
    TabMots(7)= "DAT "
    TabMots(8)= "version"
    TabMots(9)= "=5568"
    Merci de votre aide

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    plusieurs choses :
    1) en faisant ton Split avec " ", tu vas provoquer une erreur, car cela te découpera également "Engine version" !!!
    Ce que tu nous montres de ton fichier, donne à penser qu'il te faut utiliser le split avec le caractère de tabulation et non avec l'espace (reste toutefois à savoir s'il ne s'agit pas d'un fichier texte structuré, auquel cas, il faut en connaître la structure et l'utiliser)
    2) ton mécanisme ne peut tenir la route que si chacune de tes lignes comprend le même nombre de tabulations et que les renseignements à extraire de chaque ligne ont toujours le même rang

    3) ton
    ne te "ramènera que le 1er mot de chaque ligne (puisque i = 0 toujours !
    Il te faut faire une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 0 to Ubound(tabmots)
    pour extraire tous les articles de tabmots, ou redéfinir i pour chacun des mots que tu veux extraire

    4) ton éclatement par split (donc tabmots) concerne bien évidemment chacune des lignes et pas, comme c'est apparemment ce que tu penses, l'ensemble de tes mots à extraire de ton fichier !

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Tu ne dis pas ce qui ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TabMots = Split(LigneSuivante, " ")
    Ici je suppose que tu as un tableau avec ta ligne
    dans l'exemple que tu as donné 5 postes.

    Le problème se poserait à la ligne suivante ou tu as un nouveau tableau à ajouter au tableau existant.

    Il y a peut être plus simple, mais ce que je verai c'est d'utiliser un autre tableau contenant tous les postes

    Par exemple (non testé)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    X = X + Ubound(TAbmots) + 1
    ReDim TabTot(X)
    For i = Lbound(Tabmots) to Ubound(Tabmots)
    Tabtot(X + i) = tabmots(i)
    next i
    Edit : bonjour Ucfoutu pas raffraichi.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Points : 307
    Points
    307
    Par défaut Extraction données fichier texte
    Je serais toi , j'utiliserais Excel pour ouvrir le fichier Texte ( en lecture sans le modifier pour ne pas compromettre les essais ultérieurs ).

    Déja , on aurait une réponse sur le type de séparateur pour les colonnes , les lignes ...

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par CodeFacile Voir le message
    Je serais toi , j'utiliserais Excel pour ouvrir le fichier Texte ( en lecture sans le modifier pour ne pas compromettre les essais ultérieurs ).

    Déja , on aurait une réponse sur le type de séparateur pour les colonnes , les lignes ...
    Merci de votre a tous. J'ai finalement utilisé la fonction "mid" car les éléments de mon rapport sont fixes.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/12/2010, 22h04
  2. Réponses: 1
    Dernier message: 15/12/2008, 19h50
  3. Réponses: 9
    Dernier message: 05/11/2007, 11h05
  4. Réponses: 3
    Dernier message: 09/09/2006, 13h24
  5. Réponses: 12
    Dernier message: 18/06/2006, 19h42

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