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: 
			
		
	
								
								
									
	
		
			
		
		
	
	
	
		
			
		
		
	
								
							
							 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		