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 :

Reproduire un même traitement sur les autres fichiers texte d'un dossier [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut Reproduire un même traitement sur les autres fichiers texte d'un dossier
    Salut le forum

    Je souhaite reproduire un même traitement sur les autres fichiers texte qui se trouvent dans mon dossier.
    Je suis passé par l'enregistreur pour réaliser le code ci-dessous pour un fichier texte de mon dossier.
    Le code à me proposer devra importer les autres fichiers et faire le traitement demandé et coller le résultat sur une feuille.
    Si possible je souhaite que le nom de la feuille soit tiré du nom du fichier texte (les 5 derniers chiffres du fichier) sachant que le nom du fichier suit cette logique c'est à dire que les 5 derniers chiffres se terminent par des chiffres (5).
    Ci-dessous 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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub traitement()
    '
    ' traitement Macro
    '
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;C:\Users\vf002\Desktop\BILAN31052015\ebilncgag01001.rep", Destination _
            :=Range("$A$1"))
            .Name = "ebilncgag01001"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileFixedColumnWidths = Array(6, 8, 6, 16, 20, 20, 20, 8, 9, 9)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        Range("A:B,E:F").Select
        Range("E1").Activate
        ActiveWindow.SmallScroll ToRight:=2
        Range("A:B,E:F,I:K").Select
        Range("I1").Activate
        Selection.Delete Shift:=xlToLeft
        Range("A16").Select
        ActiveWindow.SmallScroll Down:=-9
        Rows("1:3").Select
        Selection.ClearContents
        Columns("A:A").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows("1:3").Select
        Selection.Delete Shift:=xlUp
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "CODE"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "RC"
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "INTITULE"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "MONTANT"
        Range("E1").Select
        ActiveCell.FormulaR1C1 = "NOMBRE"
        Range("A2").Select
        ActiveWindow.SmallScroll Down:=-9
     
    End Sub

  2. #2
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    tu met tes liens dans un dico ou un tableau
    tu appel cette sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fichier = dir(... lien avec un joker)
    while fichier<> ""
    call tafonction
    fichier = dir
    wend
    En fait cette sub parcours ton fichier . Au niveau du lien tu dois mettre un ou deux joker ( une etoile ) dsl j'ai in pb avec mon clavier mais c'est l'etoile.
    etu fait la meme fonction mais avec un parametre lien en parametre pour pouvoir l'utiliser dans cette boucle .


    Si tu n'y arrive pas reviens , je vais developper, le temps de brancher un clavier
    Allez le RC LEns

  3. #3
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonsoir TAMTAM64

    Je m'excuse du temps mis car j'avais un empêchement.
    Voici ce que j'ai pu réaliser mais je rencontre un débogage (absence de boucle).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub traitement_fichier()
    Dim Fichier As String
    Fichier = Dir(Sheets("Menu").Range("B7").Value & "\*.rep")
    If Fichier = "" Then MsgBox "Aucun fichier de type .rep dans le répertoire sélectionné"
    Do While Fichier <> ""
    Application.StatusBar = "Traitement en cours : " & Fichier
    Call Traitement
    'Fichier = Dir
    End Sub
    Merci de m'aider

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Call Traitement(Fichier)
    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
    Sub traitement(Fichier as string)
    '
    ' traitement Macro
    '
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & Fichier;Destination _
            :=Range("$A$1"))
            .Name = "ebilncgag01001"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileFixedColumnWidths = Array(6, 8, 6, 16, 20, 20, 20, 8, 9, 9)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
        Range("A:B,E:F").Select
        Range("E1").Activate
        ActiveWindow.SmallScroll ToRight:=2
        Range("A:B,E:F,I:K").Select
        Range("I1").Activate
        Selection.Delete Shift:=xlToLeft
        Range("A16").Select
        ActiveWindow.SmallScroll Down:=-9
        Rows("1:3").Select
        Selection.ClearContents
        Columns("A:A").Select
        Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
        Rows("1:3").Select
        Selection.Delete Shift:=xlUp
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "CODE"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "RC"
        Range("C1").Select
        ActiveCell.FormulaR1C1 = "INTITULE"
        Range("D1").Select
        ActiveCell.FormulaR1C1 = "MONTANT"
        Range("E1").Select
        ActiveCell.FormulaR1C1 = "NOMBRE"
        Range("A2").Select
        ActiveWindow.SmallScroll Down:=-9
     
    End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonsoir rdurupt et le forum

    Merci pour votre solution.
    Je l'ai collé mais cette partie est sélectionnée en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & Fichier;Destination _
            :=Range("$A$1"))
    Je ne sais pas pourquoi.

  6. #6
    Membre régulier
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Points : 93
    Points
    93
    Par défaut
    Bonsoir à tous

    Je suis passé par l'enregistreur pour réaliser ce que je pouvais.
    Tout n'est pas automatisé mais j'ai pu résoudre considérablement le temps de traitement.
    Pour cela je clôture le sujet.

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

Discussions similaires

  1. Batch copie les nouveaux fichiers textes d'un dossier
    Par okoama dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 01/03/2012, 10h25
  2. Réponses: 1
    Dernier message: 07/10/2008, 06h18
  3. Traitement sur les fichiers Excel
    Par ProgD dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 18/09/2007, 17h19
  4. Réponses: 15
    Dernier message: 01/06/2007, 23h29
  5. Réponses: 6
    Dernier message: 15/06/2004, 10h26

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