VB code Importer document txt selon critères et arranger en colonnes dans .xls

jeanlouisn

XLDnaute Nouveau
Bonjour chers amis du forum,

Voici qques jours que je cherche le moyen d'automatiser l'importation d'un fichier text depuis un module placé dans Excel mais rien de ce que j'ai pu trouver sur le forum ne me convient tout à fait.

J'en fais donc appel aux plus doués d'entre vous pour me venir en aide.

La situation est la suivant:

J'ai un fichier text (UserDataExport.txt dans UserDataExport.zip) contenant des données importées d'une base de donnée Lotus Note.
Ce fichier est de taille variable et contient bien plus de données que j'en ai besoin.
En admettant que je ne sois interessé que par certaines variables, comme par exemple
uid:, role: ,email_address: ,first_name: ,last_name: ,country: ,language:
et qu'en tête de colonne de la feuill1 de mon fichier Excel de destination j'ai pris soin de rentrer ces même nom de variables,
comment faire pour qu'à l'aide d'un code vb le fichier source soit parcouru du début à la fin, et renvoyer à ma feuill1 d'Excel les valeur de ces variables ordonnées sous les têtes de colonne préalablement définies.
Je me retrouverais avec un fichier Excel du type:

A B C D
1 uid: role: email_address: first_name: etc..
2 JohnChen employee John@etex.com John
3 AndyKoh employee Andy@etex.com Andy

Je peux aussi préciser que je débute en visual basic et souhaite progresser alors si le membre du forum qui m'aidera pouvait avoir la gentillesse de commenter son code, je lui en serais extrêment reconnaissant.

ps: j'ai un peu exlorer la voie de la manipulation de binary files mais ceci n'a pas donné grand chose...

merci d'avance et à bientot
JeanLouis
 

Pièces jointes

  • UserDataExport.zip
    473 bytes · Affichages: 51

pierrejean

XLDnaute Barbatruc
Re : VB code Importer document txt selon critères et arranger en colonnes dans .xls

bonjour jeanlouisn

A tester:

Code:
Sub Import()
Application.ScreenUpdating = False
MonNom = ActiveWorkbook.Name
    Workbooks.OpenText Filename:="[COLOR=red]F:\texcel1\[/COLOR]UserDataExport.txt", Origin:= _
        xlWindows, StartRow:=1, 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))
For n = 2 To Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("A65536").End(xlUp).Row
  If Range("A" & n) = "[User]" Then
    fin = n - 1
    Exit For
  End If
Next n
 Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("A2:A" & fin).Copy
 Workbooks(MonNom).Sheets("Feuil1").Range("A1").PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=True
ligne = 1
For n = 1 To Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("A65536").End(xlUp).Row
   For m = 1 To Workbooks(MonNom).Sheets("Feuil1").Range("IV1").End(xlToLeft).Column
      If Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("A" & n) = Workbooks(MonNom).Sheets("Feuil1").Cells(1, m) Then
         Workbooks(MonNom).Sheets("Feuil1").Cells(ligne, m) = Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("B" & n)
      End If
   Next m
   If Workbooks("UserDataExport.txt").Sheets("UserDataExport").Range("A" & n) = "[User]" Then ligne = ligne + 1
Next n
Workbooks("UserDataExport.txt").Close
Application.ScreenUpdating = True
End Sub

La partie en rouge est a adapter
 

Pièces jointes

  • Import.zip
    9 KB · Affichages: 63
  • Import.zip
    9 KB · Affichages: 56
  • Import.zip
    9 KB · Affichages: 61

jeanlouisn

XLDnaute Nouveau
Re : VB code Importer document txt selon critères et arranger en colonnes dans .xls

Un grand merci Pierrejean, c'est un bon code que tu m'as livré là.
N'est il toutefois pas possible de déclarer explicitement les colonnes que je voudrais extraite dans le fichier Excel?
Ce besoin naît du fait que mon fichier txt source peut s'avérer très volumineux et je ne souhaiterais pas importer toutes les données.
Merci encore pour ton aide très précieuse.
Jeanlouis
 

mromain

XLDnaute Barbatruc
Re : VB code Importer document txt selon critères et arranger en colonnes dans .xls

bonjour jeanlouisn (et pierrejean)

je te propose une autre solution (commentée) qui à l'air de fonctionner.

A+
 
Dernière édition:

jeanlouisn

XLDnaute Nouveau
Re : VB code Importer document txt selon critères et arranger en colonnes dans .xls

re-bonjour,
merci mromain pour ton aide et l'effort de comentaire que tu as fait, merci bcp.

Ton code, mromain, provoque un Run-Time error '1004' Unable to get the Find property of the WorksheetFunction class à la ligne suivante:

'récupérer la valeur de l'attribut (avant ": ")
attrubut = Mid(ligneLue, 1, WorksheetFunction.Find(": ", ligneLue, "1") - 1)

Je n'ai donc pu le tester jusqu'au bout.
Il me semble toutefois en lisant tes lignes et leur commentaires qu'à aucun moment je ne peux choisir les colonnes que je désire copiées de la source txt vers la destination xls.

Encore merci pour votre aide précieuse
 

mromain

XLDnaute Barbatruc
Re : VB code Importer document txt selon critères et arranger en colonnes dans .xls

bonsoir jeanlouisn,

J'ai fait une modif pour l'erreur.

Il me semble toutefois en lisant tes lignes et leur commentaires qu'à aucun moment je ne peux choisir les colonnes que je désire copiées de la source txt vers la destination xls.

en fait, il suffit d'écrire sur la première ligne les attribut à extraire, et de lancer la macro.

Je te renvoie un fichier tout prêt...

A+
 

Pièces jointes

  • Classeur1.xls
    33 KB · Affichages: 118
  • Classeur1.xls
    33 KB · Affichages: 118
  • Classeur1.xls
    33 KB · Affichages: 123

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 168
dernier inscrit
isidore33