Fredox
XLDnaute Occasionnel
Bonjour,
Grâce à la macro suivant, j'ouvre un fichier externe pour récupérer les donneées d'une feuille au nom déja défini:
J'aimerais que le nom de feuille défini actuellement par "Sheet1" soit remplacé par le nom de la première feuille du fichier sur lequel la connexion se fait.
Jai essayer de placer un simpe NomFeuille = Worksheets(1).Name après "La requête", sans succes.
Quelqu'un aurait-il une idée ?
Merci
Grâce à la macro suivant, j'ouvre un fichier externe pour récupérer les donneées d'une feuille au nom déja défini:
VB:
' ------------------------------------------------------------------------------------------------------------------------------------------------
Dim Shell, DesktopPath
Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
ChDir DesktopPath
FichierImport = Application.GetOpenFilename("Fichier (*.mhtml; *.xlsx), *.mhtml; *.xlsx", , "Selectionnez votre fichier 'ANGLI Batteries'")
' FichierImport = Environ("USERPROFILE") & "\Desktop\Export\01 - ANGLI Batterie.MHTML"
If FichierImport = "Faux" Then GoTo Fin
ExtNom = Mid(FichierImport, InStrRev(FichierImport, ".") + 1)
A_Patientez ' <----- Boite de dialogue | Patientez
Application.StatusBar = "Importation des données...)"
'ActiverPatientez
'>----------<
On Error Resume Next
Worksheets(1).ShowAllData
On Error GoTo 0
' <---------- Supprime la feuille Sh_Importation si elle existe déja
On Error Resume Next
Sheets("Sh_Importation").Delete
On Error GoTo 0
' Ajoute une feuille nomée "Sh_Importation"
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Sh_Importation"
' Copie le fichier ".MHTML" vers ".xlsx"
Workbooks.Open Filename:=FichierImport
ActiveWorkbook.SaveAs Filename:=Environ("USERPROFILE") & "\Desktop\Fichier01.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
fichier01 = Environ("USERPROFILE") & "\Desktop\Fichier01.xlsx"
' Ferme le classeur
Workbooks("Fichier01.xlsx").Close False
Dim Cn As ADODB.Connection
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
'Définit le classeur fermé servant de base de données
'Nom de la feuille dans le classeur fermé
NomFeuille = "Sheet1"
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& fichier01 & ";Extended Properties=""Excel 12.0;HDR=NO;""" ' HDR=YES pour ne pas récupérer le contenu de la première ligne
.Open
End With
'-----------------
'... la requête ...
'
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
Range("A1").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
' ------------------------------------------------------------------------------------------------------------------------------------------------
J'aimerais que le nom de feuille défini actuellement par "Sheet1" soit remplacé par le nom de la première feuille du fichier sur lequel la connexion se fait.
Jai essayer de placer un simpe NomFeuille = Worksheets(1).Name après "La requête", sans succes.
Quelqu'un aurait-il une idée ?
Merci
Dernière édition: