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 :

Importer 1 fichier txt dans une feuille de classeur Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Importer 1 fichier txt dans une feuille de classeur Excel
    Bonjour !

    Voila mon problème, j'ai un dossier avec environ 50 fichiers txt identique au niveau du format et je souhaiterais que 1 seul fichier soit importé par feuille automatiquement... Chaque fichier txt doit se transformer en tableau et dans un deuxième temps je voudrais rajouter des calculs dans les colonnes suivantes...

    Est ce que c'est possible?

    Voila le code créer avec l'enregistrement de macro:

    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
     Sub IMPORT_TXT()
    '
    ' IMPORT_TXT Macro
     
    Dim NomFichier As String
    Dim Chemin As String
     
    Chemin = "CHEMIN"
    NomFichier = Dir(Chemin & "*.txt")
    While NomFichier <> ""
     
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;(CHEMIN)" _
            , Destination:=Range("$A$1"))
            .Name = "*"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 932
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileOtherDelimiter = "|"
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
        Wend
     
    End Sub
    Je ne comprends pas pk ma macro bug à cet endroit...

    .Refresh BackgroundQuery:=False

    Merci par avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Pour copier tes fichiers, tu pourrais essayer ainsi.
    Les onglets vont avoir les noms par défaut, par contre.
    Et je n'ai mis aucune formule.

    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
    Sub TransfertFichiers()
        Dim dtObject As DataObject
        Dim strTemp As String
        Dim Fichier As Variant
        Dim Chemin As String
        Dim FF As Integer
     
        Chemin = "C:\Test\"  'Changer au besoin ici ou dans une cellule
        If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
     
        Fichier = Dir(Chemin & "*.txt", vbArchive)
        Do While Fichier <> ""
            Sheets.Add after:=Worksheets(Worksheets.Count)
     
            FF = FreeFile
            Open Chemin & Fichier For Input As #FF
            strTemp = Input(LOF(FF), FF)            'charge le contenu du fichier dans la variable
     
            Set dtObject = New DataObject
            dtObject.SetText strTemp
            dtObject.PutInClipboard                 'place le texte dans le presse-papier
            ActiveSheet.Range("A1").PasteSpecial    'Colle le contenu
     
            Close #FF
     
            dtObject.Clear
            Set dtObject = Nothing
     
            Fichier = Dir                           'lecture du fichier suivant
        Loop
     
    End Sub
    MPi²

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Bonjour!

    Merci pour ta réponse mais je sais pas pourquoi mon VBA ne comprend pas cette ligne:
    Dim dtObject As DataObject
    Il me dis que le DataObject est un objet non défini...
    Je ne comprends pas très bien , j' ai cherché un peu sur internet mais je n'ai pas trouvé pourquoi est ce que ça ne fonctionne pas

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Désolé, j'ai oublié de dire qu'il faut cocher la référence à Microsoft Forms 2.0
    MPi²

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Super ça fonctionne mais j'ai perdu la mise en forme automatique, j'ai juste mon texte brut qui arrive et j'aurais voulu qu'il soit mis sous forme de tableau directement...

    Comment est ce que je peux lier ta macro avec la mienne?

    Merci!

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Ajuste la mise en forme manuellement une fois en utilisant le menu Données / Convertir et ajoute le séparateur de ton fichier texte.
    Excel devrait s'en rappeler par la suite.
    MPi²

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Si jamais Excel enregistre le format il m'importe mes fichiers n'importe comment avec des calculs que je ne veux pas!

    Voila les 3 macros que j'aimerais fusionner en une seule mais j'ai beau essayé dans tous les sens je n'y arrrive pas...

    Importation des fichiers (celle que tu m'as gentillement 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
    Sub TransfertFichiers()
     
        Dim dtObject As DataObject
        Dim strTemp As String
        Dim Fichier As Variant
        Dim Chemin As String
        Dim FF As Integer
     
        Chemin = "I:\Chemin\"  'Changer au besoin ici ou dans une cellule
        If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
     
        Fichier = Dir(Chemin & "*.txt", vbArchive)
        Do While Fichier <> ""
            Sheets.Add after:=Worksheets(Worksheets.Count)
     
            FF = FreeFile
            Open Chemin & Fichier For Input As #FF
            strTemp = Input(LOF(FF), FF)            'charge le contenu du fichier dans la variable
     
            Set dtObject = New DataObject
            dtObject.SetText strTemp
            dtObject.PutInClipboard                 'place le texte dans le presse-papier
            ActiveSheet.Range("A1").PasteSpecial    'Colle le contenu
     
            Close #FF
     
            dtObject.Clear
            Set dtObject = Nothing
     
            Fichier = Dir                           'lecture du fichier suivant
        Loop
     
    End Sub

    La mise en page avec mes calculs qui fonctionne seuleument page par page:

    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
    Sub FORMATO()
    '
    ' FORMATO Macro
    '
    ' Touche de raccourci du clavier: Ctrl+Shift+F
    '
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
            1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
            , 1), Array(13, 1), Array(14, 1), Array(15, 1)), TrailingMinusNumbers:=True
        Range("P3").Select
        ActiveCell.FormulaR1C1 = "TAXA MÊS"
        Range("Q3").Select
        ActiveCell.FormulaR1C1 = "TAXA ANO"
        Range("R3").Select
        ActiveCell.FormulaR1C1 = "COEFF"
        Range("S3").Select
        ActiveCell.FormulaR1C1 = "EQUA MONT"
        Range("T3").Select
        ActiveCell.FormulaR1C1 = "EQUA REDE"
        Range("U3").Select
        ActiveCell.FormulaR1C1 = "EQUA TOTAL"
        Range("P4").Select
        ActiveCell.FormulaR1C1 = "=RC[-6]/100"
        Range("P4").Select
        Selection.AutoFill Destination:=Range("P4:P147")
        Range("P4:P147").Select
        Range("Q4").Select
        ActiveCell.FormulaR1C1 = "=RC[-6]/100"
        Range("Q4").Select
        Selection.AutoFill Destination:=Range("Q4:Q147")
        Range("Q4:Q147").Select
        Range("R4").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-6]>1,RC[-6]/100,RC[-6])"
        Range("R4").Select
        Selection.AutoFill Destination:=Range("R4:R147")
        Range("R4:R147").Select
        Range("S4").Select
        ActiveCell.FormulaR1C1 = "=RC[-6]/100"
        Range("S4").Select
        Selection.AutoFill Destination:=Range("S4:S147")
        Range("S4:S147").Select
        Range("T4").Select
        ActiveCell.FormulaR1C1 = "=RC[-6]/100"
        Range("T4").Select
        Selection.AutoFill Destination:=Range("T4:T147")
        Range("T4:T147").Select
        Range("U4").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
        Range("U4").Select
        Selection.AutoFill Destination:=Range("U4:U147")
        Range("U4:U147").Select
        Range("A2").Select
     
     
    End Sub
    Et pour finir comment nommer mes feuilles automatiquement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub NOM_FEUILLE()
     
    Dim Feuille As Worksheet
     
    For Each Feuille In Worksheets
        Feuille.Name = Feuille.Range("A2").Value
    Next Feuille
     
    End Sub
    Est ce que qu'elqu'un pourrait m'aiguiller afin que j'arrive à fusionner tout ça?

    Merci beaucoup pour votre aide en tout cas et désolé je suis un peu un noob en VBA...

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Quand tu mets du code, utilise le bouton # pour formater celui-ci et rendre sa lecture plus facile.

    Immédiatement après avoir copier/formater ton fichier, tu peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.Name = Range("A2")
    Si le séparateur a déjà été accepté dans Excel, nul besoin de rappeler ce formatage, en principe.
    MPi²

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci c'est déjà une macro de moins a utiliser! Est ce que tu sais pourquoi quand je sélectionne toutes mes pages pour faire ma mise en page ça ne fonctionne pas?
    A la limite si je pouvais juste faire tourner 2 macros ca serait cool

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Pour la mise en page sur plusieurs feuilles, ça dépend de la version, si je ne me trompe pas.
    Je pense que c'est possible seulement sur les dernières versions.
    MPi²

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Brésil

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2014
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Merci pour ton aide, cela convient au final donc je vais le laisser comme ca!

    Sujet résolu!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/07/2016, 20h34
  2. [AC-2010] Importer X fichier txt dans une seule table
    Par Mitch_69 dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/10/2012, 14h01
  3. importer un fichier .txt dans une table
    Par caracas dans le forum Administration
    Réponses: 2
    Dernier message: 31/07/2007, 21h19
  4. Réponses: 8
    Dernier message: 28/12/2006, 14h18
  5. importation d'un fichier txt dans une table
    Par pierre.egaud dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/09/2006, 16h26

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