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 Sub

Merci 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 Sub

Bonjour,

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 Sub

J'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 mais en fait ça me pose un autre petit problème, c'est que cela me décale les importations a chaque fois, au lieu de remplacer la plage de données.

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.

sans titre 2

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 Sub

Je 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").Value

Car les valeurs dépendent de la feuille active !

Cdlt,

Rechercher des sujets similaires à "parametrer emplacement fichier procedure enregistree"