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 SubSauf 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 ifensuite 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 WithMerci beaucoup c'est pile ce que je voulais!