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

Signaler
Messages postés
75
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
16 juin 2006
-
Messages postés
75
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
16 juin 2006
-
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

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
3
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Messages postés
75
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
Merci pour le bout de code.Cela marche mais on est obligé d'ouvrir le deuxième classeur.Comment faire pour que le nom de la feuille qu'on enregistre soit égale au numéro du devis?SVP
merci
Messages postés
75
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
C'est bon j'ai trouver pour le renommage.
merci
Messages postés
75
Date d'inscription
samedi 2 avril 2005
Statut
Membre
Dernière intervention
16 juin 2006
1
C'est bon j'ai trouver pour le renommage.
merci