Importer fichier texte (macro vba)

livedraz

XLDnaute Nouveau
Bonjour à tous !
Alors apres avoir tourné, retourné et ratatourné sur le forum, je me decide enfin à poster ma question.
Je ne trouve pas la réponse et meme si j'ai bien en tete le mode de fonctionnement impossible de mettre en place quelquechose qui me satisfasse pleinement.

J'ai un fichier texte sous la forme suivante :

Wayne Mcmillan SF all 16 5 /17 0 /5 6 /10 1 0 6 1 5 3 20:26
Mika Livedraz PG all 8 4 /4 0 /0 0 /0 1 4 2 0 3 0 24:00
...

(voici juste 2 lignes, ce sont des lignes de stats basket. Y'en a plein apres ...)

Je voudrais recuperer ca dans mon fichier excel.
Au debut j'ai mis en place manuellement le principe d'importation de données externes, a chaque ouverture du classeur les données étaient mise a jour. Nickel.
Mais j'avais le probleme de devoir redefinir l'emplacement de mon fichier .txt si jamais je deplacais l'ensemble (fichier .xls et fichier .txt).

J'ai décidé d'enregistrer une macro alors que je definissait mon enregistrement de données.
A cette macro j'ai ajouté les lignes suivantes pour ne pas avoir a me soucier d'un deplacement eventuel des 2 fichiers :

Code:
    nomfichier = "TEXT;" & ActiveWorkbook.Path & "\stats.txt"
    Range("A2").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
       nomfichier, Destination:=Range( _
        "A2"))

Ce qui me donne la macro complete suivante :

Code:
Private Sub Workbook_Open()
    nomfichier = "TEXT;" & ActiveWorkbook.Path & "\stats.txt"
    Range("A2").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
       nomfichier, Destination:=Range( _
        "A2"))
        .Name = "MacroStats"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = False
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileOtherDelimiter = "/"
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    ActiveWindow.SmallScroll Down:=-3
End Sub

J'ai placé le code sur l'objet "ThisWorkBook" afin que le code se lance à chaque démarrage.

Résultat des courses : Ben ca marche assez bien.
Sauf que chaque fois que j'ouvre mon classeur excel et bien celui me créé une nouvelle importation de données (forcement puisque c'est ce qu'est sencé faire ce code). Ca me donne au final autant de requetes d'importation que de fois ou j'ouvre mon classeur :(

Exemple : j'ai ouvert 7 fois mon classeur ...


Je voudrais donc que chaque fois que j'ouvre mon classeur, ca m'importe mes stats à jour, d'un fichier qui serait toujours dans le meme repertoire que mon classeur (quelque soit ce repertoire).

Merci d'avance a vous ... je suis tout ouï !
 

jp14

XLDnaute Barbatruc
Re : Importer fichier texte (macro vba)

Bonjour

Chaque fois que l'on importe des données dun fichier texte Excel les importe dans un nouvelle feuille et de ce fait dans un nouveau classeur.
Pour n'avoir qu'un classeur il faut importer et ensuite faire un copier coller entre le nouveau classeur et le classeur existant.

JP
 
Dernière édition:

livedraz

XLDnaute Nouveau
Re : Importer fichier texte (macro vba)

Dans ce cas présent et avec ce code la, excel m'importe les données exactement ou je les veux, il me les colles dans la cellule précise la ou j'en ai besoin.
Comme j'ai plein de calculs qui se font par rapport a ces statistiques c'est important pour moi.

Le probleme est que a cause de ce code j'ai une nouvelle requete d'importation qui se créé a chaque ouverture du classeur.
 

Discussions similaires

Réponses
1
Affichages
113