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 :

Code VBA excel conversion d'un répértoire txt en plusieurs tableaux xls et leurs sauvegardes [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Code VBA excel conversion d'un répértoire txt en plusieurs tableaux xls et leurs sauvegardes
    Bonjour tt le monde, je suis nouveau. Je suis nul dans la programmation
    J'ai besoin de votre aide pour un code vba pour excel-2010. Je veux un code pour automatiser l'import des fichiers txt localisés dans un même dossier sachant que le séparateur décimale dans les fichier txt est un point. J'aimerai que tous les fichiers txt dans ce dossier soit converti en plusieurs classeurs excel (1 classeur excel pour 1 fichier txt) et enregistrés dans le même dossier que les fichiers txt et chacun porte le nom de son fichiers txt correspondant ou si c'est plus simple un seul classeur excel avec plusieurs feuilles dont chacune correspond à un fichier txt et porte son nom.
    J’essaye avec ce code pour convertir les fichiers txt vers xls, il fonctionne bien, la conversion est correcte mais , je dois lui spécifier pour chaque fichier texte le répertoire là où il doit aller le chercher, il me manque l'enregistrement automatique, et la conversion de tout un répertoire de fichier txt en xls! est ce possible de m'aider à améliorer ce code avec un maximum d'explication possible parce que je ne connais rien dans les codes VBA macro excel. D'avance Merci
    Voici le 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
    Option Explicit
     
    Sub Tst()
    Dim Fichier As Variant
        ChDir ThisWorkbook.Path
        Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
            If Fichier <> False Then
            Lire Fichier
        End If
    End Sub
     
    Function Lire(ByVal NomFichier As String)
    Dim Chaine As String
    Dim Ar() As String
    Dim i As Long
    Dim iRow As Long, iCol As Long
    Dim NumFichier As Integer
    Dim Separateur  As String * 1
     
        '  Séparateur Tabulation
        Separateur = Chr(9)
     
        Cells.Clear
        NumFichier = FreeFile
        iRow = 1
     
        Open NomFichier For Input As #NumFichier
            Do While Not EOF(NumFichier)
                iCol = 1
                Line Input #NumFichier, Chaine
                Ar = Split(Chaine, Separateur)
                For i = LBound(Ar) To UBound(Ar)
                    Cells(iRow, iCol) = Ar(i)
                    iCol = iCol + 1
                Next
                iRow = iRow + 1
            Loop
        Close #NumFichier
    End Function

  2. #2
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Bonjour,
    J'ai vu récemment de nombreux messages qui traitent du même problème que le tien sur ce forum. As-tu essayé la fonction recherche pour les trouver ? (Avec "parcourir répertoire" ou "liste fichiers")
    Sinon, il y a un tuto sur ce site sur la gestion des fichiers et des dossiers ou tu trouveras ton bonheur. Je te laisse chercher également, y'a pas de raison

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    J'ai essayé mais j'ai pas trouvé mon bonheur, pour manipuler des fonction de programmation , je sais pas le faire, je suis biochimiste, mais vraiment nul en informatique, donc je fais appel à des profess comme vous . En tt cas merci d'avance pour vos aides

  4. #4
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Voici un code que j'ai essayé de commenter au maximum pour que tu comprennes bien comment ça fonctionne. Ca marche chez moi.

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Explicit
     
    Public Sub Test()
        Dim fd As FileDialog
        Dim repertoire As String
     
        Set fd = Application.FileDialog(msoFileDialogFolderPicker) 'création d'une boite de dialogue choix de répertoire
        fd.AllowMultiSelect = False 'on ne peut choisir qu'un seul repertoire
     
        If fd.Show = -1 Then 'l'utilisateur à valider sa selection
            repertoire = fd.SelectedItems(1) 'le repertoire choisi
            TransformerTousLesFichiers repertoire
        End If
     
    End Sub
     
    'Boucle sur tous les fichiers d'un répertoire
    Private Sub TransformerTousLesFichiers(ByVal repertoire As String)
        Dim fso As New FileSystemObject
        Dim fichier As File
     
        For Each fichier In fso.GetFolder(repertoire).Files 'pour chaque fichier du repertoire
            If Right(fichier.Name, 4) = ".txt" Then 'si c'est un fichier texte
                TransformerFichierTexteEnExcel fichier 'il effectue la transformation ci-dessous
            End If
        Next fichier
     
    End Sub
     
    'Ouvre un fichier texte, sépare chaque ligne par ses "tab" et le met dans un fichier excel qui porte le même nom
    Private Sub TransformerFichierTexteEnExcel(ByRef fichier As File)
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim chemin As String
        Dim nomFichier As String
        Dim numFic As Integer
        Dim i, iCol, iRow As Long
        Dim ligneFichier As String
        Dim ligneFichierSplit() As String
        Dim separateur As String
     
        chemin = fichier.ParentFolder.Path 'le chemin du fichier texte
        nomFichier = fichier.Name 'le nom du fichier texte
        nomFichier = Left(nomFichier, Len(nomFichier) - 4) & ".xls" 'qu'on transforme en fichier excel
     
        Set wb = Application.Workbooks.Add 'on ouvre un nouveau classeur
        wb.SaveAs chemin & "\" & nomFichier 'qu'on sauve sous le bon nom
     
        Set ws = wb.Worksheets(1) 'la première feuille
     
        numFic = FreeFile
        separateur = Chr(9)
        Open fichier.Path For Input As #numFic 'ouverture du fichier texte
     
        iRow = 1
     
        Do While Not EOF(numFic) 'tant que le fichier n'est pas parcouru en entier
            iCol = 1
     
            Line Input #numFic, ligneFichier 'on récupère la ligne suivante
            ligneFichierSplit = Split(ligneFichier, separateur) 'on sépare la ligne dans un tableau
     
            For i = LBound(ligneFichierSplit) To UBound(ligneFichierSplit) 'on copie le tableau
                ws.Cells(iRow, iCol) = ligneFichierSplit(i)
                iCol = iCol + 1
            Next
     
            iRow = iRow + 1
        Loop
     
        Close #numFic 'fermeture du fichier texte
     
        wb.Save 'sauvegarde du fichier excel
        wb.Close 'fermeture du fichier excel
     
    End Sub

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Merci pour le code, mais en l'exécutant, la boite de dialogue supposé apparaitre pour faire le choix du répertoire n'a pas apparue !! mais il m'affiche un message dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TransformerFichierTexteEnExcel(ByRef fichier As File)
    erreur de compilation : Type défini par l'utilisateur non défini
    Ce que j'avais fait c étais copier coller dans le microsoft visual basique 'Excel 2010'. Dois-je changé spécifier quelque chose dans le code, si oui ou et quoi, Merci beaucoup pour votre aide.

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Où as-tu trouvé un type de variable nommé File?

  7. #7
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, Eagle-I : tu as oublié d'aller voir dans http://www.developpez.net/forums/d11...ichiers-texte/ Post #4

  8. #8
    Membre chevronné Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Points : 2 131
    Points
    2 131
    Par défaut
    Pour mon code, il fallait cocher "Microsoft Scripting Runtime" dans les références VBA.

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Salut tt le monde, Salut ZebreLoup, salut Kiki, voilà avec le code de ZebreLoup ça marché quand j'ai couché "Microsoft Scripting Runtime" dans les références VBA. ça marche super bien , Merci infiniment pour toi ZebreLoup et kiki29 et tt ceux qui se donnent la peine pour apporter de l'aide .

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

Discussions similaires

  1. Code VBA excel form et modules
    Par Cptnikita dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2007, 10h15
  2. Code VBA après conversion 2003->97
    Par madchemiker dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/05/2007, 16h15
  3. [VBA EXCEL] export vers un fihcier txt
    Par jarod_bx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2006, 20h27
  4. [VBA Excel] conversion d'une chaine en numérique
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/12/2005, 17h56
  5. [VBA][EXCEL]Conversion d'une chaine en single
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/11/2005, 17h28

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