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 :

remplacer les virgules par des tabulations


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut remplacer les virgules par des tabulations
    bonjour,

    je n'ai que tres peu de compétences en programation.

    Une personne a écrit un programme sous bv 6 pour moi, qui répond a mes besoins. Cependant il ne fonctionne pas.

    Je travaille sous arcgis (cartographie). Je veux créer un MNT, à partir d'un fichier source fournit par une entreprise. Ce fichier source est en .dat, il est composé de trois colonnes, qui représentent les coordonnées X, Y et Z de différents points.

    CE programme me permet de transformer ce fichier source en fichier .txt pour que je puisse le transformer en .dbf sous arcgis. Il me permet aussi d'éliminer les lignes qui ont des valeurs nulles et d'ajouter sur la première ligne les caractère X Y Z, et enfin de remplacer les virgules (séparateur de champ) par des tabulations.

    Mon problème est, que le fichier .txt que génère le programme ne doit pas générer les tabulations correctement. En effet, je peux le vérifier en ouvrant le fichier sous un editeur de texte et je me rends compte que les espacements entre mes trois colonnes ne correspondent pas à une tabulation (trop court), de plus sous arcgis je ne peux pas générer une table à partir du fichier .txt puisqu'il ne reconnait pas les soit disant tabulations comme séparateur de texte.

    Voici le code qu'il m'a était donné:

    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    'Routine permettant d'ouvrir un fichier et de supprimer les lignes de 0 et de remplacer les "," par des tabulations
    Sub lectureFichier(ByVal fichier As String)
     
        ' Declare la variable ligne
        Dim Ligne As String, Temp As String, ff1 As Integer, ff2 As Integer
        Dim NbChampNul As Integer
        Dim nameFich As String
        Dim monTab() As String
     
        'Ouvre le fichier
        ff1 = FreeFile
        Open fichier For Input As #ff1
     
        'Construction du chemin de sortie du fichier modifié
        ff2 = FreeFile ' Cherche un index disponible
     
        monTab = Split(pathfilename, ".")
     
        'Boucle pour la reconstruction de la chaine à l'emplacement du fichier chargé
        'avec un nouveau nom en _out.txt
        For i = 0 To UBound(monTab) - 1
            nameFich = nameFich & monTab(i)
            'Test pour rajouter un "." quand il est dans le chemin et ne pas le mettre quand c'est une extension
            If i <> UBound(monTab) - 1 Then
                nameFich = nameFich & "."
            End If
        Next i
     
        nameFich = nameFich & "_out.txt"
     
     
        Open nameFich For Output As #ff2
     
        Print #ff2, "X"; vbTab; "Y"; vbTab; "Z"
     
        NbChampNul = 0
     
        While Not EOF(ff1)
         'For A = 1 To 6 Step 1
     
            Line Input #ff1, Ligne
            If (Ligne = "0.000,0.000,0.000") Then
                NbChampNul = NbChampNul + 1
            Else
                Ligne = Replace(Ligne, ",", "    ")
                Print #ff2, Ligne
            End If
        ' Next A
        Wend
     
        'Ferme le fichier
        Close #ff1, #ff2
        'Affiche le résultat dans un Msgbox
        MsgBox "Le fichier contient " & NbChampNul & " lignes nulles"
     
        fichierCréé = True
     
     
        Exit Sub
     
    End Sub

    A mon avis l'erreur se situe dans "ligne=replace(Ligne, ",", " ")". Apres lecture de différents cas sur ce forum, j'ai essayé des modifications comme remplacer le " " par vbTab ou par un copier collé d'une tabulation et autre...
    Rien n'y fait, je n'arrive toujours pas à transformer le fichier .txt généré par ce programme en .dbf sous arcgis.
    Peut etre que l'erreur se situe ailleurs, je n'ai as trop les compétences pour voir certaines subtilités.

    toutes vos suggestions seront les bienvenues.

    Merci.

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Remplace la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Print #ff2, "X"; vbTab; "Y"; vbTab; "Z"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Print #ff2, "X" & chr(9) & "Y" & chr(9) & "Z"

    Remplace la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ligne = Replace(Ligne, ",", "    ")
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ligne = Replace(Ligne, ",", chr(9))
    si ça ne fonctionne pas, mets un fichier texte d'origine en fichier joint stp.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    c'est étrange, car le replace m'a l'air bon.

    Es-tu sûr qu'en entrée les virgules sont bien placées ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    je ne l'ai pas précisé mais j'ai aussi utilisé le Chr(9), cela n'avait pas fonctionné. Mais votre code est différent de celui que j'avais écrit.
    Je vais essayer donc.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    j'ai utilisé les lignes que vous m'aviez suggérez, il en sort:
    => arcgis (arccatalog) ne reconnait pas le fichier .txt, pour preuve, lorsque je lance l'outil qui me permet de faire la transformation .txt en .dbf, les lettres X, Y et Z ne s'affichent pas dans les champs de la fenêtre.
    => cependant lorsque j'ouvre le fichier .tx généré sous word pad, je constate que le tabulations sont mieux marquées quelles ne pouvaient l'être avec mes modifiactions propre. Donc je pense que ces dernières modifications sont meilleures.

    Nouvelle remarque:
    une fois que j'ai ouvert le nouevau fichier .txt sous word pad, pour voir comment il a été crée, j'ai fait un "enregistrer sous" sans toucher à quoi que ce soit dans le fichier. (en texte). Et là, j'ai réussi à opérer la transformation .txt en .dbf sous arcgis. Donc je pense que le programme que l'on m'a donné ne doit pas bien créer le fichier texte.
    peut etre avez vous une suggestion.
    En piece jointe le fichier créée avec vos nouvelles lignes de comande.

  6. #6
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je ne vois pas de fichier joint, mais plutot que le fichier deja traité par ton programme, je prefèrerais le fichier ORIGINAL stp, ou alors les 2 fichiers.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    juste une question à tout hasard, n'utilisant jamais "print" je me demande si cela ajoute correctement le retour de chariot à la fin de la ligne.

    Vous savez si c'est le cas ?

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Oui il ajoute bien le CRLF

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    depuis tout a l'heure j'essaie de joindre mon fichier à un post mais je n'y arrive pas. En lisant le mode de fonctionnement du forum je crois que ce n'est aps possible.
    Ensuite pour répondre à Vld44 je ne sai spas ce que veut dire "retour de chariot" alors je ne peux pas répondre!
    je viens de voir qu'il existe une commande "CreateTextFile", je me demande si ce n'est pas par cette commande qu'il faut passer. Je pense que mon programme ne crée pas vraiment un fichier texte.

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Tu as le bouton "gérer les pièces jointes" en dessous de la zone d'édition du message, clique dessus puis clique sur le bouton "Parcourir" dans la nouvelle fenetre pour ajouter un fichier zip (contenant tous tes fichiers texte par exemple) puis clique sur le bpouton "Envoyer".

    L'idéal serait de mettre ans ton fichier zip, un fichier original à convertir et un fichier texte pret à être importé dans ArcGis pour voir la différence entre les 2.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Voici en piece jointe des bouts de fichiers (les originaus sont trop volumineux pour etre joints).
    "Zone" est le fichier original
    "test2" est le fichier .txt, transformé par le programme et réenregistré sous un éditeur de texte, c'est celui qui est reconnu par arcgis.
    Fichiers attachés Fichiers attachés

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Points : 1 418
    Points
    1 418
    Par défaut
    c'est quoi le dernier caractère de "zone.txt" ? Mon textpad ne le reconnait pas et il n'est plus dans le fichier final ouvert et reconnu par ton programme.

    Vérifie le fichier brut de sortie traité par VB (avant de le réenregistrer) sous notepad, et vérifie si le caractère est là aussi.

    Vérifie ensuite s'il est là après enregistrement.

  13. #13
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Le dernier caractère est le code ascii 26 si je dis pas de betise mais voilà un traitement succint qui fonctionne en l'état (j'ai justement mis le On Error resume next qui du coup enregistre une ligne vide en cas de pépin, ce n'est dobnc pas idéal mais on va laisser notre ami peaufiner les détails)

    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
     
    Dim Nf1 As Byte
    Dim Nf2 As Byte
    Dim Ch As String
    Dim X As String
    Dim Y As String
    Dim Z As String
    Nf1 = FreeFile
    Open "c:\zone.txt" For Input As #Nf1
    Nf2 = FreeFile
    Open "c:\export.txt" For Output As #Nf2
    Print #Nf2, "X" & Chr(9) & "Y" & Chr(9) & "Z"
    On Error Resume Next
    Do
      Input #Nf1, X, Y, Z
      Ch = X & Chr(9) & Y & Chr(9) & Z
      Print #Nf2, Ch
    Loop Until EOF(Nf1)
    On Error GoTo 0
    Close

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    ok. Je vais voir ce que donne ces nouvelles informations.
    Merci pour votre aide, à tous.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Grille XYZ vers Ascii Grid Esri
    Regarde ce lien sur le site d'ESRI US, peut etre c'est ce qu'il te faut...

    http://arcscripts.esri.com/details.asp?dbid=15296

    yahyah

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    bonjour,

    vos conseils ont été tres porteurs. Le programme marche à présent, je peux transformer les fichiers.
    Je pense que c'est d'avoir utilisé "& chr(9)"à la place de "vbTab".
    En plus d'avoir résolu mon problème, j'ai appris des choses.
    Merci à vous.
    Merci aussi pour le lien sur ersri, ce script semble interessant.

  17. #17
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Le probléme était ailleurs, on peut utiliser indifféremment chr(9) et vbtab.
    Mais content que ton problème soit résolu.

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

Discussions similaires

  1. GTK (glade) remplace les points par des virgules
    Par MaxXxoui dans le forum GTK+
    Réponses: 1
    Dernier message: 04/07/2013, 18h05
  2. [CSV] Remplacer les points par des virgules
    Par johnkro dans le forum Langage
    Réponses: 4
    Dernier message: 27/11/2008, 20h25
  3. Remplacer les virgules par des points
    Par vatsyayana dans le forum Excel
    Réponses: 7
    Dernier message: 14/06/2008, 12h13
  4. Label d'axe graphique: remplacer les nombres par des mots
    Par Chrysomallus dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/04/2007, 16h23
  5. [vb6] Remplacer les Frames par des PictureBox
    Par Christophe P. dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2006, 17h26

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