Paramétrer un emplacement de fichier dans une procédure enregistrée
Bonjour à tous
Dans une Application, je souhaite intégrer les données d'un fichier txt
à partir de la cellule AB70 de la feuille active. (je précise qu'il ne faut pas visualiser l'action)
J'ai défini mes variables mais je ne sais pas comment les intégrer dans le code.
Sub Archives_txt()
Dim Fichiers As Variant
Dim Fichier_txt As Variant
Dim Directory As Variant
Fichiers = Range("N35").Value
Fichier_txt = Range("N36").Value
Directory = Worksheets("Admin").Range("C24").Value
'Enregistrement de la procédure
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;E:\Apli_Tex_Presse150bth\Archive\0000201635_0014.txt", Destination:= _
Range("$AB$70"))
' Je voudrais remplacer: E:\Apli_Tex_Presse150bth\Archive\ par Directory
' et 0000201635_0014.txt par "Fichier_txt"
.Name = "0000201635_0014"
'Je souhaiterais également remplacer "0000201635_0014" par "Fichier"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 20269
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End SubMerci de votre aide,
Cordialement Eric
bonsoir,
une proposition (vérifie le nom de la variable Fichier)
Sub Archives_txt()
Dim Fichiers As Variant
Dim Fichier_txt As Variant
Dim Directory As Variant
Fichiers = Range("N35").Value
Fichier_txt = Range("N36").Value
Directory = Worksheets("Admin").Range("C24").Value
'Enregistrement de la procédure
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Directory & Fichier_txt, Destination:= _
Range("$AB$70"))
'With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;E:\Apli_Tex_Presse150bth\Archive\0000201635_0014.txt", Destination:= _
Range("$AB$70"))
' Je voudrais remplacer: E:\Apli_Tex_Presse150bth\Archive\ par Directory
' et 0000201635_0014.txt par "Fichier_txt"
.Name = Fichier 'ou Fichiers ?
'.Name = "0000201635_0014"
'Je souhaiterais également remplacer "0000201635_0014" par "Fichier"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 20269
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End SubBonjour,
En principe, comme ceci :
Sub Archives_txt()
Dim Fichier As String
Dim Fichier_txt As String
Dim sDirectory As String
Fichier = Range("N35").Value
Fichier_txt = Range("N36").Value
sDirectory = Worksheets("Admin").Range("C24").Value
'Enregistrement de la procédure
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sDirectory & Fichier_txt, Destination:=Range("$AB$70"))
.Name = Fichier
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 20269
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End SubJ'ai changé le type des variables car il s'agit de chaines de caractères.
Supposons que ma variable test vaille "efg".
Alors "abcdefghijk" équivaut à "abcd" & test & "hijk".
Cdlt,
Edit : Salut h2so4 !
Bonjour à tous
Merci pour vos réponse qui fonctionnent
Du coup j'ai tenté de l’exécuter dans une autre feuille "Donnee" à partir de ma feuille de saisie et j'ai une erreur au deuxième coups.
Mon Code modifié est :
Sub Archives_txt()
Dim Fichier As String
Dim Fichier_txt As String
Dim sDirectory As String
Fichier = Range("A1").Value
Fichier_txt = Range("A2").Value
sDirectory = Worksheets("Admin").Range("C25").Value
'Enregistrement de la procédure
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sDirectory & Fichier_txt, Destination:=Worksheets("Donnee").Range("$A$10"))
'With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sDirectory & Fichier_txt, Destination:=Range("$A$10"))
.Name = Fichier
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 20269
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
'...Suite du programme
End SubJe précise que la plage d'importation des données (texte) sont appelé dans la feuille de saisie (avec =)
Merci pour ceux qui suivent, car c'est pas facile à expliquer
Bonsoir Eric,
Pour ma part, j'ai répondu sur la question de la variable car je ne connais pas cette méthode (.querytable.add).
En tout cas, vous avez changé pas mal de références dans votre code et vous n'avez pas joint de fichier. A votre place, je commencerais par affecter plus exactement mes variables :
Fichier = worksheets("nomfeuille").Range("A1").Value '<<<<<<<
Fichier_txt = worksheets("nomfeuille")..Range("A2").Value '<<<<<<<<<<<<
sDirectory = Worksheets("Admin").Range("C25").ValueCar les valeurs dépendent de la feuille active !
Cdlt,