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 :

Séparateur dans un fichier texte variable : virgule ou tabulation [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Séparateur dans un fichier texte variable : virgule ou tabulation
    Bonjour,

    J'importe des fichiers texte dans une feuille de classeur. Ces fichiers textes comporte deux colonnes qui peuvent être soit séparées par une virgule (code ascii 44) soit par une tabulation (code ascii 13). Je sais importer soit un cas soit l'autre mais pas déterminer lequel choisir. Une idée ?

    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
    'Importation des données .dpt dans le classeur
            C = 2 'Boucle sur fichiers du repertoire
                For Each FsoFichier In FsoRepertoire.Files
                    i = 2
                    str = Split(FsoFichier.Name, ".") 'Vérifie si le fichier a l'extension souhaité
                        If str(UBound(str)) = "dpt" Then
                            Sheets("Import").Cells(1, C).Value = NomFichierSansExtension(FsoFichier.Name)
                            Open FsoFichier.Path For Input As #1 'ouvre le fichier
                                Do While Not EOF(1) 'Boucle sur chaque ligne du fichier
                                    Line Input #1, strLigne
                                    str = Split(strLigne, Chr(44))
                                    Sheets("Import").Cells(i, C).Value = str(1) 'insere la ligne dans la cellule
                                    If C = 2 Then
                                        Sheets("Import").Cells(i, 1).Value = str(0)
                                    End If
                                    i = i + 1
                                Loop
                            Close #1
                            C = C + 1
                        End If
                Next
            ws1.[A1] = "Nombre d'onde (cm-1)"
            ws1.[A1].Characters(Start:=18, Length:=2).Font.Superscript = True
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Une méthode serait de tester sur la première ligne avec le séparateur tabulation.
    Si une seule colonne alors on utilise chr(44) sinon chr(13)

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Merci jérome pour ta réponse

    En fait il ne faut pas tester le nombre de colonne mais si le caractère existe sur la première ligne alors l'utiliser. Mais je ne vois pas comment faire le test

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    En fait il ne faut pas tester le nombre de colonne mais si le caractère existe sur la première ligne alors l'utiliser. Mais je ne vois pas comment faire le test
    C'est une autre approche

    En testant si caractère existant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If InStr(StrLigne, ";") > 0 Then
        MsgBox "séparateur ;"
    Else
        MsgBox "séparateur Tab"
    End If

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Merci beaucoup pour cette solution qui fonctionne très bien !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/01/2007, 18h20
  2. Réponses: 2
    Dernier message: 11/10/2006, 22h35
  3. Réponses: 2
    Dernier message: 08/06/2006, 13h48
  4. [VBA-E]Remplacement virgules par tabulation dans un fichier texte
    Par Mlezen dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/05/2006, 14h03
  5. Réponses: 2
    Dernier message: 16/12/2004, 15h33

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