Modif Macro

Bonjour,

J'ai réalisé une macro mais elle ne fait pas tout a faite ce que je veux... Mais j'y suis presque!

La macro est la suivante :

Sub Récup_données()
    '
    ' Récup_données Macro
    '

    '
    ActiveWorkbook.Queries.Add Name:="Exemple", Formula:= _
1        "let" & Chr(13) & "" & Chr(10) & "    Source = Folder.Files(""C:\Users\Clément\Desktop\Stage\Travaux\Mise en place relevé de production\Exemple"")," & Chr(13) & "" & Chr(10) & "    #""Autres colonnes supprimées"" = Table.SelectColumns(Source,{""Content""})," & Chr(13) & "" & Chr(10) & "    #""Personnalisée ajoutée"" = Table.AddColumn(#""Autres colonnes supprimées"", ""Extraire les données"", each Excel.Workbook([Content]))," & Chr(13) & "" & Chr(10) & "    #""Colonnes supprimé" & _
        "es"" = Table.RemoveColumns(#""Personnalisée ajoutée"",{""Content""})," & Chr(13) & "" & Chr(10) & "    #""Extraire les données développé"" = Table.ExpandTableColumn(#""Colonnes supprimées"", ""Extraire les données"", {""Name"", ""Data"", ""Item"", ""Kind"", ""Hidden""}, {""Extraire les données.Name"", ""Extraire les données.Data"", ""Extraire les données.Item"", ""Extraire les données.Kind"", " & _
        """Extraire les données.Hidden""})," & Chr(13) & "" & Chr(10) & "    #""Lignes filtrées"" = Table.SelectRows(#""Extraire les données développé"", each ([Extraire les données.Name] = ""Récup""))," & Chr(13) & "" & Chr(10) & "    #""Personnalisée ajoutée1"" = Table.AddColumn(#""Lignes filtrées"", ""Enlever les en-tête"", each Table.PromoteHeaders([Extraire les données.Data]))," & Chr(13) & "" & Chr(10) & "    #""Autres colonnes supprimées1"" = Table.S" & _
        "electColumns(#""Personnalisée ajoutée1"",{""Enlever les en-tête""})," & Chr(13) & "" & Chr(10) & "    #""Enlever les en-tête développé"" = Table.ExpandTableColumn(#""Autres colonnes supprimées1"", ""Enlever les en-tête"", {""Nom du chantier"", ""Volume matière"", ""Temps total"", ""Temps Hundegger"", ""Temps Cyber"", ""Temps Montage petite série"", ""Temps montage grande Série"", ""Temps Coupe" & _
        " Spéciale""}, {""Nom du chantier"", ""Volume matière"", ""Temps total"", ""Temps Hundegger"", ""Temps Cyber"", ""Temps Montage petite série"", ""Temps montage grande Série"", ""Temps Coupe Spéciale""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Enlever les en-tête développé"""
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Exemple;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Exemple]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Exemple"
        .Refresh BackgroundQuery:=False
End Sub

Sauf que à la place de la partie : "C:\Users\Clément\Desktop\Stage\Travaux\Mise en place relevé de production\Exemple" (qui est à la ligne que j'ai noté 1), j'ai besoin que la macro me demande de m'afficher la boite de dialogue qui me demande de choisir le chemin vers un dossier.

Je sais pas si c'est très clair

Si vous avez une solution n'hésitez surtout pas à changer mon code ou à me faire parvenir les modifs à y apporter!

Merci d'avance

bonjour,

remplace le début de ton code par ceci

 With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "choisir le fichier à ouvrir"
        .Filters.Clear
        .Filters.Add "Excel files", "*.XLS*"
        If .Show = True Then
            nf = .SelectedItems(1)
        Else
            MsgBox "pas de fichier sélectionné"
            Exit Sub
        End If
    End With

    ActiveWorkbook.Queries.Add Name:="Exemple", Formula:= _
                               "let" & Chr(13) & Chr(10) & "    Source = Folder.Files(""" & nf & """)," & Chr(13)

Très bien merci, mais j'ai pas compris jusqu'où est-ce que je dois remplacer

Bonjour,

tu peux récupérer le chemin du répertoire de cette manière

Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
Repertoire.Show

If Repertoire.SelectedItems.Count > 0 Then _
     (....)'suite de ton code
end if

ensuite tu remplaces ""C:\Users\Clément\Desktop\Stage\Travaux\Mise en place relevé de production\Exemple"" par Repertoire.SelectedItems(1)

EDIT : désolé @h2so4 je remarque jamais quand quelqu'un répond pendant que j'écris surtout que ta solution est plus complète.

h2so4 : Et aussi dans la partie de ton code, il me dit que la variable "nf = " n'est pas définie

Et vince : quand je mets ton code il me dit que la variable "repertoire = " n'est pas définie

Il y a un truc que je dois oublier de faire où que je fais mal ...

rebonjour,

Sub Récup_données()
'
' Récup_données Macro
'

    Dim nf$

    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .Title = "choisir le fichier à ouvrir"
        .Filters.Clear
        .Filters.Add "Excel files", "*.XLS*"
        If .Show = True Then
            nf = .SelectedItems(1)
        Else
            MsgBox "pas de fichier sélectionné"
            Exit Sub
        End If
    End With

    ActiveWorkbook.Queries.Add Name:="Exemple", Formula:= _
                               "let" & Chr(13) & Chr(10) & "    Source = Folder.Files(""" & nf & """)," & Chr(13) _
                               & Chr(10) & "    #""Autres colonnes supprimées"" = Table.SelectColumns(Source,{""Content""})," & Chr(13) & "" & Chr(10) & "    #""Personnalisée ajoutée"" = Table.AddColumn(#""Autres colonnes supprimées"", ""Extraire les données"", each Excel.Workbook([Content]))," & Chr(13) & "" & Chr(10) & "    #""Colonnes supprimé" & _
                               "es"" = Table.RemoveColumns(#""Personnalisée ajoutée"",{""Content""})," & Chr(13) & "" & Chr(10) & "    #""Extraire les données développé"" = Table.ExpandTableColumn(#""Colonnes supprimées"", ""Extraire les données"", {""Name"", ""Data"", ""Item"", ""Kind"", ""Hidden""}, {""Extraire les données.Name"", ""Extraire les données.Data"", ""Extraire les données.Item"", ""Extraire les données.Kind"", " & _
                               """Extraire les données.Hidden""})," & Chr(13) & "" & Chr(10) & "    #""Lignes filtrées"" = Table.SelectRows(#""Extraire les données développé"", each ([Extraire les données.Name] = ""Récup""))," & Chr(13) & "" & Chr(10) & "    #""Personnalisée ajoutée1"" = Table.AddColumn(#""Lignes filtrées"", ""Enlever les en-tête"", each Table.PromoteHeaders([Extraire les données.Data]))," & Chr(13) & "" & Chr(10) & "    #""Autres colonnes supprimées1"" = Table.S" & _
                               "electColumns(#""Personnalisée ajoutée1"",{""Enlever les en-tête""})," & Chr(13) & "" & Chr(10) & "    #""Enlever les en-tête développé"" = Table.ExpandTableColumn(#""Autres colonnes supprimées1"", ""Enlever les en-tête"", {""Nom du chantier"", ""Volume matière"", ""Temps total"", ""Temps Hundegger"", ""Temps Cyber"", ""Temps Montage petite série"", ""Temps montage grande Série"", ""Temps Coupe" & _
                               " Spéciale""}, {""Nom du chantier"", ""Volume matière"", ""Temps total"", ""Temps Hundegger"", ""Temps Cyber"", ""Temps Montage petite série"", ""Temps montage grande Série"", ""Temps Coupe Spéciale""})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Enlever les en-tête développé"""
   

note que le code que tu as fourni n'est pas complet, il manque a minima un end with

Nickel, vous êtes des génies!!!!!!

Et est-ce que c'est possible de faire la même chose mais avec un dossier, car je travaille sur des dossier?

Merci beaucoup!

re,

tu as juste à remplacer "msoFileDialogFilePicker" par "msoFileDialogFolderPicker"

With Application.FileDialog(msoFileDialogFilePicker)

Cordialement

Il me demande toujours de lui sélectionner un fichier dans un dossier...

En fait je dois traiter tous les fichier d'un dossier avec ma macro

Ce code fonctionne pour moi vérifie que c'est bien le même

Dim nf$
With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
        .Title = "choisir le dossier à ouvrir"
        .Filters.Clear
        If .Show = True Then
            nf = .SelectedItems(1)
        Else
            MsgBox "pas de dossier sélectionné"
            Exit Sub
        End If
End With

Merci beaucoup c'est pile ce que je voulais!

Rechercher des sujets similaires à "modif macro"