Copier feuille excel dans un autre classeur sans l'ouvrir vb excel

erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 - 22 juin 2005 à 10:51
erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 - 22 juin 2005 à 11:53
Bonjour a tous les développeurs,
dans le cadre de mon stage je réalises des devis,j'ai un Classeur1 qui me sert de faire les devis et j'ai un autre classeur Archives_Devis dans lequel sera stocker les devis réalisés.Ce que je souhaiterais faire c'est copier UNIQUEMENT la feuille DEVIS du Classeur1 dans le classeur Archives_Devis en gardant aussi la mise en forme si possible et sans l'ouvrir à chaque fois.Sachant que le numéro du devis sera le nom de la feuille dans le classeur Archives_Devis.
On ma déjà proposé un bout de code mais cela ne marche pas.

Sub Export_VersNouvelleFeuille_ClasseurExcelFerme()
'transférer la feuille "devis" dans un nouvel onglet d'un classeur fermé
Dim oRS As ADODB.Recordset
Dim oConn As ADODB.Connection
Dim maFeuille As String, prepaTable As String
Dim j As Integer, i As Integer


'nom(sans espace!) de la feuille Excel qui va etre créée dans le classeur fermé
maFeuille = "ArchiveDevis002"


Set oConn = New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Classeur1_Fermé.xls;" & _
"Extended Properties=""Excel 8.0;HDR=NO;"""

For i = 1 To 10 'nombre de colonnes à transférer
'paramétrage entêtes de colonnes et types de données
prepaTable = prepaTable & "Colonne" & i & " Memo ,"
Next i


prepaTable = Left(prepaTable, Len(prepaTable) - 1)
'creation nouvelle Feuille Excel
oConn.Execute "create table " & maFeuille & "(" & prepaTable & ")"


Set oRS = New ADODB.Recordset
oRS.Open "Select * from " & maFeuille, oConn, adOpenKeyset, adLockOptimistic

For j = 1 To 40 'nombre de lignes à transferer
oRS.AddNew
For i = 1 To 10 'nombre de colonnes à transférer
oRS.Fields(i - 1) = Sheets("devis").Cells(j, i)
Next i
oRS.Update
Next j

oRS.Close
oConn.Close
End Sub


Quelqu'un aurait-il une autre solution SVP,c'est urgent car je finis bientot mon stage.
MERCI D'AVANCE.

4 réponses

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 7
22 juin 2005 à 11:25
Voila un bout de code qui copie la Feuil1 de Classeur2 à la fin de classeur 1 et qui renomme la copie

Public Sub test()
Dim l_WorkSheet As Worksheet
Workbooks("Classeur2").Worksheets("Feuil1").Copy After:=Workbooks("Classeur1").Worksheets(Workbooks("Classeur1").Worksheets.Count)
'Récupère la feuille qui vient d'être copiée (dernière feuille du classeur)
Set l_WorkSheet = Workbooks("Classeur1").Worksheets(Workbooks("Classeur1").Worksheets.Count)
'Renomme la feuille
l_WorkSheet.Name = "toto" & Workbooks("Classeur1").Worksheets.Count
End Sub
1