[Catégorie modifiée .Net --> VBA] Problème macro importation fichier texte sous

Résolu
Matinfo Messages postés 3 Date d'inscription vendredi 3 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010 - 3 sept. 2010 à 18:54
Matinfo Messages postés 3 Date d'inscription vendredi 3 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010 - 7 sept. 2010 à 11:26
Bonjour,

J'ai un problème avec la macro suivante. Elle a été créée afin qu'en ouvrant un fichier excel vierge, je puisse aller chercher un fichier texte avec getopenfilename, et que les données de ce fichier texte soient insérées dans mon fichier excel.
Les deux parties fonctionnent, si je fais deux macros indépendantes, mais le lien entre les deux ne semble pas se faire. J'obtiens toujours le message d'erreur :"Erreur d'execution 1004"

Si quelqu'un avait ne serait-ce qu'un début de solution, ce serait formidable!

Merci d'avance!

Voici le code:

Sub importtxt()
'
' importtxt Macro

'Aller chercher le chemin du fichier .txt à importer
MsgBox "Ouvrez le fichier.txt à importer sous Excel"

fileToOpen = Application.GetOpenFilename()
If fileToOpen <> False Then
   MsgBox "Fichier sélectionné!"
End If

Range("B1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;fileToOpen" _
        , Destination:=Range("B1"))
        .Name = "07SA22_10mW_amb_16scans"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlMacintosh
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileFixedColumnWidths = Array(12, 19)
        .Refresh BackgroundQuery:=False
        .UseListObject = False
    End With
   

End Sub

3 réponses

Matinfo Messages postés 3 Date d'inscription vendredi 3 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010
7 sept. 2010 à 11:26
Ca y est, j'ai trouvé ce qui ne va pas.
Il faut remplacer:
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;fileToOpen" _
        , Destination:=Range("B1"))

par:
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & fileToOpen, Destination:=Range("B1"))

J'espère que ça pourra servir à quelqu'un d'autre!
3
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
6 sept. 2010 à 17:22
Salut
Si tes deux procédures marchent séparément, dans ce cas sépare les et appelle la deuxième proc à la fin de la première
0
Matinfo Messages postés 3 Date d'inscription vendredi 3 septembre 2010 Statut Membre Dernière intervention 7 septembre 2010
7 sept. 2010 à 10:12
Merci beaucoup houtas pour ta réponse. J'ai essayé d'appeler d'appeler les deux macros séparément, mais la jonction ne se fait pas.
Je m'explique : avec GetOpenfilename, je réussis à sélectionner le chemin ainsi que le nom du fichier désiré (vérifié avec des MsgBox). En revanche, lorsque je fais QueryTable, j'ai l'impression que je n'ai pas correctement fait appel au chemin obtenu précédemment. J'ai d'ailleurs fait une correction, car je ne faisais pas appel au bon nom de fichier, mais le même message d'erreur 1004 s'affiche. Ci-dessous, la dernière version du code. Une autre petite idée pour me déboguer?
Merci d'avance!

Sub importtxt()
'
' importtxt Macro
' Macro enregistrée le 3/09/2010 par pierre metzger

'Aller chercher le chemin du fichier .txt à importer
MsgBox "Ouvrez le fichier.txt à importer sous Excel"

fileToOpen = Application.GetOpenFilename()
If fileToOpen <> False Then
   nomfichier = Dir(fileToOpen)
   nomfichiersansextension = Left(nomfichier, Len(nomfichier) - 4)
   MsgBox "Fichier sélectionné : " & nomfichiersansextension
End If

Range("B1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;fileToOpen" _
        , Destination:=Range("B1"))
        .Name = "nomfichiersansextension"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = xlMacintosh
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileFixedColumnWidths = Array(12, 19)
        .Refresh BackgroundQuery:=False
        .UseListObject = False
    End With
    
End Sub
0
Rejoignez-nous