Bonjour,

Je souhaite copier une feuille d'un classeur fermé vers le classeur qui exécute la macro.

J'ai déjà pu rassembler ce code qui fonctionne mais qui copie uniquement le texte. J'aimerais pouvoir garde aussi la mise en forme de la page copiée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Sub copie2()

Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
    
'Définit le classeur fermé servant de base de données
Fichier = ThisWorkbook.Path & "\TempData.xlsx"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Rapport"
    
Set Cn = New ADODB.Connection
    
'--- Connexion ---
With Cn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
    & Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
    .Open
End With
'-----------------
'... la requête ...
'
texte_SQL = "SELECT * FROM [Rapport$]"

Set requete = New ADODB.Recordset
Set requete = Cn.Execute(texte_SQL)

'tu ajoutes une feuille a ton classeur ouvert
ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ActiveSheet.Name = "Rapport"
'on récupère les données
ActiveSheet.Range("A1").CopyFromRecordset requete
    
'--- Fermeture connexion ---
requete.Close
Cn.Close
Set Cn = Nothing
Set requete = Nothing
  
End Sub
J'imagine que le changement doit se faire sur la ligne en rouge, mais de quelle manière?

Merci pour votre aide