Enregistrer une feuille excel dans un autre classeur sans ouvrir le deuxième cla

erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 - 18 juin 2005 à 16:47
erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 - 21 juin 2005 à 11:22
Bonjour,
dans le cadre de mon stage,j'ecris un programme vb sur excel afin de réaliser des devis pour une entreprise.Pour le moment j'ai fait la mise en page,puis quelques macros.Et en faite sur la feuille de DEVIS je voudrais créer un bouton qui permettrait d'enregistrer UNIQUEMENT la feuille DEVIS dans un autre classeur excel sans l'ouvrir.Ce deuxième classeur me servira en gros de base de données.
Ce procédé est il possible?C'est vraiment urgent.MERCI d'avance

4 réponses

michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
20 juin 2005 à 20:05
bonsoir

cette macro pourra peut etre t'aider avec quelques adaptations

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

bonne soiree
michel
0
erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 1
21 juin 2005 à 10:03
Bonjour,j'ai adapter votre macro.Ca me dit qu'il y a des erreurs de types.
Ca me met exactement: Erreur de compilation - Type ddéfinit par l'utilisateur non défini aux 2 premières lignes en rouge.

Private Sub btnvaldevis_Click()
Dim oRS As ADODB.Recordset
Dim oConn As ADODB.Connection
Dim maFeuille As String, prepaTable As String
Dim j As Integer, i As Integer

maFeuille = "DEVIS0001"

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

For i = 1 To 33
prepaTable = prepaTable & "Colonne" & i & "Memo ,"
Next i

prepaTable = Left(prepaTable, Len(prepaTable) - 1)
oConn.Execute "create table " & maFeuille & "(" & prepaTable & ")"
Set oRS = New ADODB.Recordset
oRS.Open "Select * from " & maFeuille, oConn, adOpenKeyset, adLockOptmistic

For j = 1 To 70
oRS.AddNew
For i = 1 To 33
oRS.Fields(i - 1) = Sheets("DEVIS").Cells(j, i)
Next i
oRS.Update
Next j

oRS.Close
oConn.Close
End Sub

Comment résoudre ce problème SVP?
Merci.
0
michelxld Messages postés 402 Date d'inscription vendredi 6 août 2004 Statut Membre Dernière intervention 12 octobre 2008 32
21 juin 2005 à 10:15
bonjour


as tu activé la référence activer la référence Microsoft ActiveX Data Object 2.x Library ( x dépend de la version que tu utilises )


dans l'editeur de macros :
Menu Outils
References
coches la ligne "activer la référence Microsoft ActiveX Data Object 2.x Library"
cliques sur OK pour valider



bonne journee
michel
0
erti1711 Messages postés 75 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 16 juin 2006 1
21 juin 2005 à 11:22
Rebonjour,avant tout merci de l'aide que vous m'apporter
j'ai fais ce que vous m'avez dit et maintenant ca me met:
Erreur d'écxécution '-2147217900(80040e14)':
Erreur de syntaxe dans l'instruction CREATE TABLE
0
Rejoignez-nous