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 :

[VBA - XL-2013]Importation fichiers texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Gestionnaire de Paie
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Gestionnaire de Paie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Par défaut [VBA - XL-2013]Importation fichiers texte
    Bonjour à tous,

    j'ai créé un code VBA pour importer des fichiers texte dans un fichier Excel mais je rencontre un problème avec certaines données : celles qui commence par un ou plusieurs 0, celui(ceux)-ci disparaissent ce qui me pose un gros soucis pour la suite car il est indispensable.

    Le but de ce document est de récupérer le contenu, de le mettre dans une forme précise puis de l'utiliser pour importer les absences des salariés en paie. Certains matricules de salariés commencent par 1 ou plusieurs 0, mais la taille n'est pas toujours fixe pour chaque salarié.

    Ci dessous le code VBA : (généré en grosse partie via l'enregistreur de macro, n'ayant pas d'idées de comment faire ça, et n'ayant pas de caractères ou autre précis permettant de délimiter les colonnes)


    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
    Sub import_fichiers_txt()
     
    Dim fichier As String, chemin As String
     
    chemin = "C:\Users\GUIGUI\Desktop\Extract Carlabella\"
     
    fichier = Dir(chemin & "*.txt")
     
    nb_lignes_absences = 2
     
    If Cells(nb_lignes_absences, 1) = "" Then
     
        nb_lignes_absences = 2
     
    Else
     
        Do While Cells(nb_lignes_absences, 1) <> ""
     
            nb_lignes_absences = nb_lignes_absences + 1
     
        Loop
     
        nb_lignes_absences = nb_lignes_absences - 1
     
    End If
     
    Call Module1.importation(chemin, fichier, nb_lignes_absences)
     
    End Sub
     
    Sub importation(chemin, fichier, ligne)
     
    With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & chemin & fichier, Destination:=Range("$A$" & ligne))
            .Name = fichier
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
            .TextFileFixedColumnWidths = Array(2, 7, 7, 8, 5, 8, 8, 56, 75, 35, 12, 3)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
     
    End Sub
    Ci-dessous un exemple de contenu de fichier texte (les matricules se situent après les deux lettres "EV"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    EV02380     096119/03/1800:0121/03/1800:01        3.00                                                                                                1                                                    21/03/1815:55:50:79     31/03/18
    EV52415     096119/03/1800:0120/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:79     31/03/18
    EV52216     096119/03/1800:0123/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
    EV53008     096113/03/1800:0116/03/1800:01        4.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
    EV02652     096112/03/1800:0116/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
    EV52415     096112/03/1800:0116/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
    EV01189     096109/03/1800:0131/03/1800:01       16.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
    EV52415     096108/03/1800:0109/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
    EV02652     096108/03/1800:0109/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
    EV52422     096105/03/1800:0109/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:82     31/03/18
    EV52422     096105/02/1800:0109/02/1800:01       -5.00                                                                                                1                                                    21/03/1815:55:50:82     31/03/18
    Si par hasard quelqu'un a une idée de comment résoudre mon problème (quitte à utiliser une autre solution pour importer les données), ce serait franchement super car là, je ne vois pas comment faire....

    Merci par avance !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Perso, je préfère faire ce type de manipulation avec un simple Workbooks.OpenText plutôt qu'avec des tables de requêtes.
    Je ne suis donc pas spécialiste.

    Mais, à mon avis, ton problème vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    Il faudrait que tu indiques que les champs où se trouvent tes codes sont de type Texte, ne laissant à "général" que les champs pouvant contenir des valeurs numériques (c'est-à-dire sur lesquelles on peut avoir à faire des opérations arithmétiques, des inégalité, etc.).
    Avec OpenText, le code du texte est 2. Peut-être que c'est la même chose avec les requêtes (à tester), sinon, il faudra utiliser le bon code.

  3. #3
    Candidat au Club
    Homme Profil pro
    Gestionnaire de Paie
    Inscrit en
    Novembre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : Gestionnaire de Paie

    Informations forums :
    Inscription : Novembre 2016
    Messages : 2
    Par défaut
    Et en remplaçant le "1" par "2", j'ai bien les 0 de récupérés donc c'était bien ça ! Un grand merci pour le petit coup de main, surtout que c'était vraiment tout con pour le coup.

    Et je ne connais pas Workbooks.OpenText, je regarderais comment ça fonctionne par curiosité.

    Encore merci

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

Discussions similaires

  1. Importer fichier texte dans base Access
    Par Mymi dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 15/08/2006, 21h21
  2. probleme avec un import fichier texte dans mysql
    Par xodeax dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/07/2006, 14h24
  3. import fichier texte dans table contrainte
    Par philippe281281 dans le forum Outils
    Réponses: 5
    Dernier message: 14/06/2006, 18h01
  4. pb importation fichier texte
    Par borisa dans le forum Access
    Réponses: 5
    Dernier message: 24/02/2006, 18h44
  5. Réponses: 2
    Dernier message: 02/02/2006, 19h21

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