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

VB 6 et antérieur Discussion :

Formatage fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 3
    Points
    3
    Par défaut Formatage fichier texte
    Bonjour à tous,

    Je suis tout nouveau sur ce forum et je pense que vous pourrez m'aider sur mon problème. J'ai un fichier texte contenants des valeurs avec des séparateurs ";", jusque là tout va bien mais je souhaiterais formatter ce fichier pour avoir des champs délimités par un longueur précise (10) comme dans un tableau. Exemple:
    avant --> aaaa;bbb;ccc;ddddddddd;e;ffffffffff
    après --> aaaa bbb ccc ddddddddd e ffffffffff

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    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 077
    Points : 17 178
    Points
    17 178
    Par défaut
    Salut, bienvenue sur DVP

    Mise à part le fait que les ; sont remplacés par des espaces, je ne comprend pas ton des champs délimités par un longueur précise (10) dans l'exemple après.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    Merci pour l'intérêt que tu portes a mon problème. En fait le message envoye n'a pas retranscris les espaces que j'ai mis dans l'exemple.
    Au lieu d'avoir des separateurs ";" je voudrais que les champs soient delimites par un nombre de caracteres precis par exemple 5. Du coup j'aurais un fichier du type :
    Aaa. Bbb. C'. Ddd
    ------ ----- ----- ----- -----
    Champs. 1. 2. 3. 4. 5.
    Comme si je faisais un tableau.
    Je sais pas si je suis assez clair.

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    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 077
    Points : 17 178
    Points
    17 178
    Par défaut
    Tiré d'un source VB6 pour créer des tableaux dans un RichTextBox
    Fonctionne aussi sous VBScript en enlevant le typage des variables et des fonctions.
    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
    45
    46
    47
    48
    '----------------------------------------Les fonctions -----------------------------------------
    Private Function StrLeft(Mot As String, NbrCaracteres As Integer, Caractere As String) As String
    Dim CpT As Integer, StrMot As String
    StrMot = Left(Mot, NbrCaracteres)
    CpT = NbrCaracteres - Len(StrMot)
    If Caractere = "" Then Caractere = " "
    If NbrCaracteres > CpT Then
        StrLeft = StrMot & String$(CpT, Caractere)
        Else
        StrLeft = StrMot
    End If
    End Function
    Private Function StrCentr(Mot As String, NbrCaracteres As Integer, CaractereG As String, Optional CaractereD As String = "False") As String
    Dim CpT As Integer, StrMot As String
    StrMot = Left(Mot, NbrCaracteres)
    CpT = (NbrCaracteres - Len(StrMot)) / 2
    If CaractereG = "" Then CaractereG = " "
    If NbrCaracteres > CpT Then
        StrCentr = String$(CpT, CaractereG) & StrMot
        If CaractereD = "False" Or CaractereD = "" Then
            StrCentr = StrCentr & String$(NbrCaracteres - Len(StrCentr), CaractereG)
            Else
            StrCentr = StrCentr & String$(NbrCaracteres - Len(StrCentr), CaractereD)
        End If
        Else
        StrCentr = StrMot
    End If
    End Function
    Private Function StrRight(Mot As String, NbrCaracteres As Integer, Caractere As String) As String
    Dim CpT As Integer, StrMot As String
    StrMot = Left(Mot, NbrCaracteres)
    CpT = NbrCaracteres - Len(StrMot)
    If Caractere = "" Then Caractere = " "
    If NbrCaracteres > CpT Then
        StrRight = String$(CpT, Caractere) & StrMot
        Else
        StrRight = StrMot
    End If
    End Function
     
    '------------------------------- utilisation -----------------------------------
    Private Sub Form_Load()
    MsgBox StrLeft("Salut",10,">")
    MsgBox StrRight("Re",20,"<")
    MsgBox StrCentr("Utilisable?",25,">","<")
     
    MsgBox StrLeft("tout ne sera pas affiché, mais pas de bug",5,"?")
    End Sub
    Motif de l'edit: je pensai avoir répondu sur le forum VBScript , Ben non, donc typage des variables.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    Merci infiniment pour ta réponse. Et j'ai bien compris avec tes exemples. Cependant comment je fais pour faire la même chose avec des valeurs entre 2 caractères spéciaux? Je mets un fichier joint ça expliquera mieux mes propos.
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,
    Tu peux procéder ainsi
    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
     
    Private Sub Command1_Click()
    Dim ligne As String
    Dim tableau() As String
    Dim i As Integer
    Dim Resultat As String
    Dim sChaine As String
     
    ligne = "CIC;8322510;401002;X;EDICOLORN;D;Rglt EDICOLOR NUMERIQUE;342,05;11/02/13;11/02/2013 00:00:00;10/02/2013 00:00:00;;;CHEQUE"
    tableau = Split(ligne, ";")
    For i = 0 To UBound(tableau)
      sChaine = "          "
      Mid(sChaine, 1, Len(sChaine)) = tableau(i)
      Resultat = Resultat & sChaine
    Next
    MsgBox ligne & vbCrLf & vbCrLf & Resultat
    End Sub
    Les éléments de plus de dix caratères sont tronqué.

    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

Discussions similaires

  1. Formatage fichiers texte avec Gnu-sed
    Par archivage-services dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/02/2010, 13h10
  2. Formatage fichier texte Windows-Linux
    Par dr_octopus74 dans le forum Administration système
    Réponses: 2
    Dernier message: 02/02/2007, 18h09
  3. [VBA-E] Formatage des données à l'ouverture d'un fichier texte
    Par jmercier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2005, 17h00
  4. [FOP] Formatage de fichier texte
    Par serwol dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/06/2005, 13h28

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