[Catégorie modifiée .Net -> VBA] Importer des données : chemin relatif

Résolu
stid59 Messages postés 22 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 25 août 2011 - 24 août 2011 à 19:54
stid59 Messages postés 22 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 25 août 2011 - 25 août 2011 à 09:47
Bonjour,

Je dois effectuer une présentation d'un programme réalisé sous Excel. Dans le fichier Excel je dois importer des données d'un fichier texte qui se trouve dans le même dossier que le fichier Excel.

Le soucis concerne le chemin à écrire pour effectuer l'importation des données et plus particulièrement le lecteur qui varie selon le PC utilisé. Voici le début de la macro :

[i]Sub initialisation()

Dim lecteur As String

'récupère le chemin du dossier où se trouve le fichier Excel
Cells(1, 1).Value = ActiveWorkbook.Path
Cells(2, 1).Select
ActiveCell.FormulaR1C1 = "=LEFT(R[-1]C,1)"
lecteur = ActiveCell.Value

'suppression des données précédentes
Sheets("Donnees").Select
Cells.Select
Selection.Clear
Selection.QueryTable.Delete

'importation des données
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" D:Stage\moulinette.txt ", Destination: =Range("A1"))
.Name = "moulinette_1"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub/i

Ce code fonctionne mais il faudrait remplacer le D du chemin par la variable lecteur. J'ai essayé toute sorte de combinaison possible pour concaténer le lecteur et le reste du chemin mais il se passe toujours une erreur.

Merci d'avance pour votre aide.

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2011 à 20:39
Salut

Pense à choisir une catégorie de question en rapport avec le langage; merci.

Regarde ActiveWorkbook.Path
Ta ligne deviendrait
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;ActiveWorkbook.Path & "\moulinette.txt", Destination:=Range("A1")) 

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 août 2011 à 20:40
Regarde mieux ta ligne : Elle doit déjà buguer : Il y a un nombre impair de "
Pas normal.
3
stid59 Messages postés 22 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 25 août 2011
25 août 2011 à 09:32
Salut jack et merci pour ta réponse.

J'avais en effet essayé cette 1ère solution. ActiveWorkbook.Path me retourne bien "D:Stage". En rajoutant & "\moulinette.txt" je pensais qu'il comprendrait "D:Stage\moulinette.txt".

Mais non çe me met une erreur de type "Attendu séparateur de liste ou )" en surlignant :
ActiveSheet.QueryTables.Add(Connection:= "TEXT;ActiveWorkbook.Path & "\moulinette.txt ", Destination:=Range(" A1"))

Je pense aussi qu'il doit y avoir un problème de ", j'ai essayé :

[i]ActiveSheet.QueryTables.Add(Connection: = _
"TEXT;ActiveWorkbook.Path & " \ moulinette.txt, Destination:=Range("A1")) /i--> Objet requis en exécutant la macro.

J'ai remarqué qu'en écrivant activeworkbook. aucune liste proposant path n'apparait alors qu'en l'écrivant ailleurs cette liste apparait. Est-il possible qu'il ne reconnaisse pas activeworkbook ?
0
stid59 Messages postés 22 Date d'inscription jeudi 2 avril 2009 Statut Membre Dernière intervention 25 août 2011
25 août 2011 à 09:47
Aaah trouvé ! Il manquait bien un " quelque part juste après TEXT; :

[i]ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & ActiveWorkbook.Path & "\moulinette.txt", Destination:=Range("A1"))/i
0
Rejoignez-nous