Copie de plusieurs feuilles d'un classeur vers un autre

remady

XLDnaute Nouveau
Bonjour tout le monde

J'utilise le code d'un fameux MichelXld que j'ai trouvé dans une des discussions pour copier une feuille d'un classeur vers un autre

Code:
Sub requeteFeuilleClasseurFerme()
'
'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library
'
'
Dim Source As ADODB.Connection
Dim Rst As ADODB.Recordset
Dim nomFeuille As String, fichier As String, texte_SQL As String
Dim i As Integer

nomFeuille = "Resultat"
'fichier = "C:\Users\U362622\Desktop\T.P\Moteurs taux pannes 3mr.xls"


Set Source = New ADODB.Connection
With Source
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & fichier & _
            ";Extended Properties=Excel 8.0;"
        .Open
End With

texte_SQL = "SELECT * FROM [" & nomFeuille & "$]"

Set Rst = New ADODB.Recordset
Set Rst = Source.Execute(texte_SQL)

For i = 1 To Rst.Fields.Count
Cells(1, i) = Rst.Fields(i - 1).Name
Next i

Sheets(nomFeuille & " pannes").Range("A1").CopyFromRecordset Rst 'import des données

Rst.Close
Source.Close
End Sub

J'aurais deux questions :

1- Comment modifier le code si je souhaite copier plus d'une feuille du même classeur.
2- Comment faire pour garder le même format de feuille (Format de cellule, couleur de tableau...) après la copie.

Merci pour vos précisions, et excellente journée à tous .
 

tototiti2008

XLDnaute Barbatruc
Re : Copie de plusieurs feuilles d'un classeur vers un autre

Bonjour remady,

ADO se connecte à l'autre classeur comme s'il était une base de données pour lire son contenu
Dans une base de données, pas trop de notion de présentation donc ça m'étonnerait qu'avec ADO on puisse récupérer la mise en forme des cellules (mais je peux toujours me tromper)

Pour plusieurs feuilles, Je pense qu'il suffit de répeter (ou de boucler sur) la partie là :

Code:
texte_SQL = "SELECT * FROM [" & nomFeuille & "$]"

Set Rst = New ADODB.Recordset
Set Rst = Source.Execute(texte_SQL)

For i = 1 To Rst.Fields.Count
Cells(1, i) = Rst.Fields(i - 1).Name
Next i

Sheets(nomFeuille & " pannes").Range("A1").CopyFromRecordset Rst
 

remady

XLDnaute Nouveau
Re : Copie de plusieurs feuilles d'un classeur vers un autre

Bonjour tototi, merci de me répondre

Le fait de ne pas copier la feuille avec le meme format ne me dérange pas tant que ca, par contre le problème c'est que pour une raison ou une autre la première ligne de ma feuille (contenant les dates) n'est pas copié, peux-tu jeter un coup d'oeil aux fichiers joints ?

Je te remercie d'avance .
 

Pièces jointes

  • test copie feuille.xls
    32 KB · Affichages: 237
  • Moteurs taux pannes 3mr.xls
    24.5 KB · Affichages: 145

remady

XLDnaute Nouveau
Re : Copie de plusieurs feuilles d'un classeur vers un autre

Re tototi,

Une dernière question : Y aurait-il une autre méthode permettant de copier des feuilles entières d'un classeur à un autre, tout en gardant la même mise en forme ? parce que celle-ci me pose beaucoup de problème et notamment celui que j'ai évoqué avant .

merci
 

tototiti2008

XLDnaute Barbatruc
Re : Copie de plusieurs feuilles d'un classeur vers un autre

Re,

à ma connaissance, pas sans ouvrir le classeur

Mais on peut trés bien faire une macro qui ouvre un classeur, qui copie les données puis ferme le classeur sans que l'utilisateur ne voit rien
 

Discussions similaires

Statistiques des forums

Discussions
312 271
Messages
2 086 688
Membres
103 372
dernier inscrit
BibiCh