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 :

Import .txt vers .xls par VB [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Par défaut Import .txt vers .xls par VB
    Bonjour,

    Tout d'abord petite présentation :

    Etudiant en IUT info, je me retrouve plongé dans une formation accès sur le développement alors que je suis issu du milieu "réseau".

    Actuellement en alternance, j'ai un projet à réaliser mais novice que je suis en développement (je n'ai jamais développé) je me trouve bloqué.

    Ce que l'on me demande :

    A partir d'un fichier texte généré une fois par jour, récapitulant la gestion d'un stock (date, reférence produits, quantités, entrée, sortie) je dois importer ces données dans un tableau Excel existant.

    Pour cela je dois passer par du VB, charger le fichier texte en mémoire et le parcourir via des commandes VB, en tout cas il me semble que c'est la procédure à entreprendre...

    Mais je ne vois pas du tout comment faire intéragir un tableau Excel et un fichier texte en passant par du langage VB.

    Je cherche actuellemnt des pistes sur la toile mais les informations que je trouve ne font que m'embrouiller les idées !

    Entrant dans une phase de découragement j'aurais aimé avoir votre avis sur la situation.

    Merci d'avance,

    PS : ci-dessous un extrait du fichier texte à traiter.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Par défaut
    Salut!
    Commence par te mettre dans un fichier excel, lance l'enregistreur de macros, et à partir d'excel, va ouvrir ton fichier txt (fichier, ouvrir, modifie le filtre en tous types de fichiers - chez moi c'est All Files - afin de voir ton fichier txt, ouvre le, suis l'assistant selon tes besoins). Une fois ton fichier txt ouvert dans Excel, stoppe l'enregistreur et regarde ce qu'il a enregistré comme code.
    Ca te donnera un bon début.
    Après, si t'as tjs des problème, on pourra plus t'aider.
    A+
    Mél

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Bonjour Loupire et bienvenue,
    Pour ton info tu as la possibilité de faire des recherches sur le forum, ce qui te permet de trouver d'autres discussions qui peuvent répondre à ton besoin car c'est un sujet qui a souvent été abordé.

    En voici un exemple:
    http://www.developpez.net/forums/d85...te-vers-excel/

    Reste a adapter à ton cas, par exemple pas d'ajout de feuille (d'ailleurs la dernière partie qui renomme les feuilles ne te concerne pas)
    Cet exemple à l'avantage de montrer comment parcourir les lignes du fichier text.

    Je donne cet exemple à titre d'alternative à l'enregistreur de macro, d'autant que tu parles de parcourir le fichier Text, le code obtenu avec l'enregistreur ne le fait pas.

    A+

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Par défaut
    Citation Envoyé par melouille56 Voir le message
    Salut!
    Commence par te mettre dans un fichier excel, lance l'enregistreur de macros, et à partir d'excel, va ouvrir ton fichier txt (fichier, ouvrir, modifie le filtre en tous types de fichiers - chez moi c'est All Files - afin de voir ton fichier txt, ouvre le, suis l'assistant selon tes besoins). Une fois ton fichier txt ouvert dans Excel, stoppe l'enregistreur et regarde ce qu'il a enregistré comme code.
    Ca te donnera un bon début.
    Après, si t'as tjs des problème, on pourra plus t'aider.
    A+
    Mél

    Merci beaucoup pour cette réponse, c'est un bon début en effet.

    J'ai une petite question :
    Dois-je obligatoirement importer mon fichier texte sous Excel (Cas 1)?
    Ou est-il possible de travailler directement entre Excel et le fichier texte par l'intermédiaire de VB (Cas 2)?

    Cas 1 :
    Fichier Excel <-(VB)- Fichier Texte importé au format Excel <-(Import)- Fichier Texte

    Cas 2 :
    Fichier Excel <-(VB)- Fichier Texte

    J'espère que ce petit schéma est clair...





    D'autre part quand je suis ta procèdure qui à mes yeux correspond au Cas 1 le code obtenu dans VB est le suivant :

    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
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;D:\Projet EXCEL_VB_TXT\EUROFIT-FR-INVRPT.wri", Destination:=Range( _
            "$A$1"))
            .Name = "EUROFIT-FR-INVRPT"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 437
            .TextFileStartRow = 1
            .TextFileParseType = xlFixedWidth
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = False
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = Array(2)
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
        End With
    End Sub

    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour Loupire et bienvenue,
    Pour ton info tu as la possibilité de faire des recherches sur le forum, ce qui te permet de trouver d'autres discussions qui peuvent répondre à ton besoin car c'est un sujet qui a souvent été abordé.

    En voici un exemple:
    http://www.developpez.net/forums/d85...te-vers-excel/

    Reste a adapter à ton cas, par exemple pas d'ajout de feuille (d'ailleurs la dernière partie qui renomme les feuilles ne te concerne pas)
    Cet exemple à l'avantage de montrer comment parcourir les lignes du fichier text.

    Je donne cet exemple à titre d'alternative à l'enregistreur de macro, d'autant que tu parles de parcourir le fichier Text, le code obtenu avec l'enregistreur ne le fait pas.

    A+

    A+

    Merci aussi pour cette réponse !

    Je suis en plein dans mes recherches sur le forum... j'ai déjà quelques pistes mais n'ayant aucune base en développement je rame énormément !
    Je suis entrain d'imprimer les PDF sur le VBA et les scripts VB proposés sur le forum.
    Et j'ai retenu les posts suivants :

    http://www.developpez.net/forums/d84...t-xls-louvrir/

    http://www.developpez.net/forums/d84...-excel-vb-net/

    http://www.developpez.net/forums/d85...re-word-excel/

  5. #5
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Re,
    Il y a plusieurs manières de faire, le tout est de savoir ce que tu dois "récupérer" pour l'ajouter au tableau existant...

    Toujours les mêmes ligne dans le fichier text?
    Toujours commençant par le mot "Total"?
    ...

    Quoi qu'il en soit ton fichier texte n'étant pas délimité de manière vraiment structurée du vas de toute façon "chipoter".

    Donne un peu plus d'info sur ce que tu dois vraiment extraire et on verra

    A+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 44
    Par défaut
    apparemment, dans le fichier texte les items a recupérer sont organisés de facon identique.
    Bon sinon le truc a faire selon moi:
    1) Charger le fichier texte dans une variable vb
    2) Récupérer les données voulues en suivant l'ordre des items,
    chaque nouvel item commence par: "Line Item No. "
    donc reperer cette chaine de caractere dans le fichier et parcourir le fichier tant qu'on est pas arrivé au bout ("EOF")
    Pour bien reperer les valeurs dans le fichier texte on pourrait aussi voir avec l'utilisation de valeurs par défaut stockées dans des variables type array et/ou utiliser des expressions régulières...
    3) on stock les données voulues dans des variables vb
    4) avant de passer a l'item suivant (a la fin de la boucle): stocker les valeurs dans le tableau excel

    Si quelqu'un peut commenter en donnant le nom des fonctions vb ou des exemples de code faisant ca, ca permettrai d'avancer plus rapidement aussi

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Par défaut
    Citation Envoyé par Fvandermeulen Voir le message
    Donne un peu plus d'info sur ce que tu dois vraiment extraire et on verra
    J'aurais bien aimé illustrer mes dires par des captures d'écran mais l'entreprise pour laquelle je travaille à tout sécurisé.

    Je vais essayer d'être le plus clair possible, le fichier texte est un fichier de gestion de stock je le detail ci-dessous :

    1 - Entête étant toujours présente en début de fichier :
    INVENTORY REPORT OF MOVEMENT QUANTITY
    Message-Date : 18.01.10 Messagenumber : 2169

    Inventory Controller
    Name: 0931342821220USA1

    Warehouse Keeper
    Name: 0002493945232
    Je dois extraire la date d"édition du fichier de l'entête.

    2 - Suite du fichier (exemple de produit n'ayant pas d'impact sur le stock):
    Line Item No. 1
    Customer Article No : 403120106R

    Buyer :
    Supplier : 225/65 R 16
    Goods Receiver :
    Seller :
    Point of Delivery :


    Movement direction Natur stock Movement reason Movement instruction
    -------------------- -------------- -------------------- -----------------------------
    Balance Saleable stock

    Quantity Unit Movement date Delivery date Booking date
    --------- ---- --------------- --------------- ---------------
    1140 PCE 18.01.10 23:15 . . : . . :

    Ref. Order Order Date Ref. Invoice Invoice Date Ref. Despatch advice Despatch Date
    -------------------- ------------- -------------------- ------------- -------------------- -------------
    . . . . . .
    En gras ce que je dois récupérer pour l'Item No. 1:
    - Customer Article No (ref. produit)
    - Movement direction (état du mouvement : Entree, Sortie, Néant=Balance)
    - Quantity (si Entrée ou Sortie, si Néant laisser le stock comme il est)
    - Dans ce cas le stock ne bouge pas car Movement direction = Balance

    3 - Suite du fichier (Exemple de Sortie de Stock)
    Line Item No. 5
    Customer Article No : 8200511156

    Buyer : 09317801299870017
    Supplier : 205/75 R16
    Goods Receiver : 09317801299870017
    Seller : 0931342821220USA1
    Point of Delivery : GRD1


    Movement direction Natur stock Movement reason Movement instruction
    -------------------- -------------- -------------------- -----------------------------
    Returned to Supplier Saleable stock Desptach to customer Movement not to be invoiced

    Quantity Unit Movement date Delivery date Booking date
    --------- ---- --------------- --------------- ---------------
    570 PCE 18.01.10 23:15 18.01.10 07:43 18.01.10 07:43

    Ref. Order Order Date Ref. Invoice Invoice Date Ref. Despatch advice Despatch Date
    -------------------- ------------- -------------------- ------------- -------------------- -------------
    126585 18.01.10 39800 18.01.10 39800 18.01.10



    Buyer :
    Supplier :
    Goods Receiver :
    Seller :
    Point of Delivery :


    Movement direction Natur stock Movement reason Movement instruction
    -------------------- -------------- -------------------- -----------------------------
    Balance Saleable stock

    Quantity Unit Movement date Delivery date Booking date
    --------- ---- --------------- --------------- ---------------
    270 PCE 18.01.10 23:15 . . : . . :

    Ref. Order Order Date Ref. Invoice Invoice Date Ref. Despatch advice Despatch Date
    -------------------- ------------- -------------------- ------------- -------------------- -------------
    . . . . . .
    En gras ce que je dois récupérer pour l'Item No. 5:
    - Customer Article No (ref. produit)
    - Movement direction (état du mouvement : Entree, Sortie, Néant=Balance)
    - Quantity (si Entrée ou Sortie, si Néant laisser le stock comme il est)
    - Dans ce cas c'est une sortie, Movement direction = Return to supplier
    - A chaque Entrée ou Sortie je dois récupérer Ref. Despatch advice qui est le numéro de bon de livraison

    Note : après une Entrée ou sortie je dois refaire une Balance comme dans l'Item No. 1


    Bonne nouvelle je peux vous envoyer des captures !
    Donc voilà la capture d'écran de mon tableau Excel dans lequel les données vont devoir être injectées, on y retrouve les données en gras du fichier texte.


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

Discussions similaires

  1. [XL-2007] Importation valeurs .txt vers .xls
    Par Loupire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/01/2010, 17h00
  2. Importer données txt vers xls
    Par kikim78 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/12/2009, 13h22
  3. extraction txt vers xls
    Par doudou1 dans le forum VBScript
    Réponses: 10
    Dernier message: 10/07/2006, 14h37
  4. [VBA-E].txt vers .xls
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 08/02/2006, 14h46

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