Enregistrer valeur Combobox dans un fichier fermé

romika

XLDnaute Occasionnel
Bonjour à tous,

j'ai encore un problème de combobox...
j'enregistre les valeurs selectionnées dans les combo de mon userform du fichier A dans un autre fichier B
Ca marche jusqu'à ce que je ferme le classeur B...et là il me sort 'erreur d'execution 9'

Pouvez vous m'aider svp
Merci d'avance

Private Sub CommandButton2_Click()
Dim i As Integer
If Me.ComboA1.Value = '' Or _
Me.ComboA2.Value = '' Or _
i = 2
Do While Not IsEmpty(Workbooks('ClasseurB.xls').Sheets('F1').Cells(i, 1))
i = i + 1
Loop
With Workbooks('ClasseurB.xls').Sheets('F1')
.Cells(i, 1) = Me.ComboA1.Text
.Cells(i, 2) = Me.ComboA2.Text

End With

If i = 2 Then
i = 3
End If

Unload Saisie
Sheets('EB1').Select

Exit Sub
err1:
MsgBox 'reviens!', vbCritical
End Sub


Donc
 

MichelXld

XLDnaute Barbatruc
bonjour

j'espere que cet exemple pourra t'aider


Code:
Private Sub CommandButton1_Click()
'necessite d'activer la reference Microsoft ActiveX DataObjects x.x Library
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String

Fichier = 'C:\\monFichier.xls' 'adapter le chemin du fichier fermé

Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
           'Data Source=' & Fichier & ';' & _
           'Extended Properties=''Excel 8.0;HDR=No;'';'

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn

'insertion dans la cellule A1 de la 'Feuil1' du classeur fermé
Cd.CommandText = 'SELECT * from `Feuil1$A1:A1`'

Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic

Rst(0).Value = ComboBox1.Value
Rst.Update
  
Cn.Close

Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing
End Sub


bonne journée
MichelXld

Message édité par: MichelXld, à: 25/06/2005 10:37
 

romika

XLDnaute Occasionnel
Bonjour, MichelXLD,

Merci pour ta réponse

Mais ça ne marche pas...

je ne comprend pas ce que veut dire le code suivant

Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & Fichier & ';' & _
'Extended Properties=''Excel 8.0;HDR=No;'';'

et quand je lance il me répond erreur de compilation et s'arrête sur: Cn As ADODB.Connection

peux-tu m'expliquer plus en détail STP car je suis nul dans ce domaine...

merci d'avance
 

MichelXld

XLDnaute Barbatruc
rebonjour

pour le message d'erreur , il faut que tu actives la référence reference Microsoft ActiveX DataObjects x.x Library

dans l'éditeur de macro
Menu Outils
References
coches sur la ligne 'reference Microsoft ActiveX DataObjects x.x Library'
cliques sur OK pour valider



Set Cn = New ADODB.Connection.... , permet de créer une connexion vers un fichier fermé , une base de données , pour importer ou exporter des données


bonne journée
MichelXld
 
R

romika

Guest
rebonjour, MichelXld,

excuse moi d'insister mais j'y arrive tjrs pas.
cette fois ci je tape:

Private Sub CommandButton2_Click()
Dim Cn As ADODB.Connection
Dim Cd As ADODB.Command
Dim Rst As ADODB.Recordset
Dim Fichier As String

Fichier = 'D:\\Classeur1.xls' 'adapter le chemin du fichier fermé

Set Cn = New ADODB.Connection
Cn.Open 'Provider=Microsoft.Jet.OLEDB.4.0;' & _
'Data Source=' & Fichier & ';' & _
'Extended Properties=''Excel 8.0;HDR=No;'';'

Set Cd = New ADODB.Command
Cd.ActiveConnection = Cn

'insertion dans la cellule A1 de la 'Feuil1' du classeur fermé
Cd.CommandText = 'SELECT * from `Feuil1A1:A1`'

Set Rst = New ADODB.Recordset
Rst.Open Cd, , adOpenKeyset, adLockOptimistic

Rst(0).Value = ComboAn.Value
Rst.Update

Cn.Close

Set Cn = Nothing
Set Cd = Nothing
Set Rst = Nothing

End Sub

Et la il me répond: Le moteur de base de donnée microsoft jet n'a pas pu trouver l'objet 'Feuil1A1:1'. Assurez vous que l'objet existe et que vous avez correctement saisi son non et chemin d'acces....

et me surligne: Rst.Open Cd, , adOpenKeyset, adLockOptimistic en jaune

je ne sais plus quoi faire....
 

romika

XLDnaute Occasionnel
rebonjour MichelXld,

merci pour ton conseil, ça marche!

par contre je voudrais aller un peu plus loin. en fait jarrive à enregistrer que la valeur de ma 1ère combo et à l'endroit spécifié: Cd.CommandText = 'SELECT * from `Feuil1$A1:A1`'.

ce que je voudrais faire c'est de rajouter plusiurs valeurs(c'est à dire de toutes mes combo à la fois sur une ligne ds le fichier B) et si je recommence la UserForm que les valeurs nouvelles s'enregistrent sur la ligne suivante sans écraser celles qui ont déja été enregistrées ds le fichier B

je joins les deux fichiers en question. je sais que c'est trop demandé, mais si tu pouvais m'aider je te serais vraiment reconnaissant. [file name=combo_20050625133352.zip size=44021]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/combo_20050625133352.zip[/file]
 

Pièces jointes

  • combo_20050625133352.zip
    43 KB · Affichages: 25

MichelXld

XLDnaute Barbatruc
rebonjour

ci joint une adaptation de ton classeur


bon apres midi
MichelXld [file name=comboVersFichierFerme.zip size=29453]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/comboVersFichierFerme.zip[/file]
 

Pièces jointes

  • comboVersFichierFerme.zip
    28.8 KB · Affichages: 44

Discussions similaires

Réponses
11
Affichages
347

Statistiques des forums

Discussions
312 495
Messages
2 088 969
Membres
103 993
dernier inscrit
Essens