Ecrire dans un classeur fermé depuis un formulaire

bonjour a tous , voila j'ai créé une application vba via excel , en gros c'est un formulaire , en ouvrant le classeur excel l'aplication s'ouvre automatiquement et propose donc un formulaire avec des textbox , un bouton parcourir et un bouton enregistré , ce que je voudrais c'est que quand l'utilisateur a fini de remplir les champs et qu'il clique sur enregistré , toutes les données s'enregistre dans une classeur fermé qui servira de base de donnée sans écraser les précédente donnée , tout doit s'enregistrer a la suite , j'ai reussi a faire le lien entre mes deux classeurs (celui comportant l'application et l'autre qui sert de base de donnée ) en utilisant ceci :

Sub RequeteClasseurFerme_Excel2007()

Dim Cn As ADODB.Connection

Dim Fichier As String

Dim NomFeuille As String, texte_SQL As String

Dim Rst As ADODB.Recordset

'Définit le classeur fermé servant de base de données

Fichier = "C:\Documents and Settings\konce\Bureau\bdd.xlsx"

'Nom de la feuille dans le classeur fermé

NomFeuille = "Feuil1"

Set Cn = New ADODB.Connection

'--- Connexion ---

With Cn

.Provider = "Microsoft.Jet.OLEDB.4.0"

.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _

& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""

.Open

End With

'-----------------

'

'... la requête ...

'

MsgBox ExecuteExcel4Macro("'C:\Documents and Settings\konce\Bureau\[bdd.xlsx]Feuil1'!R1C1")

'--- Fermeture connexion ---

Cn.Close

Set Cn = Nothing

End Sub

en mettant ça dans "thisworkbook" ça m'affiche bien la valeur de la case A1 de mon classeur fermé , néanmoins ceci s'affiche en dehors de l'utilisation du userform c'est quand je compile "thisworkbook" que sa m'affiche le nom du champ , si je lance le userform le code du "thisworkbook" n'est pas pris en compte donc ma première question est :

comment utilisé les fonctions qui se situe dans "thisworkbook" dans le userform ?

ensuite j'arrive donc a affiche un champ dans le classeur fermé mais comment ecrire dedans aprés avoir cliquer sur le bouton enregistré du userfrom ? (en gros comment déclencher la fonction "RequeteClasseurFerme_Excel2007" cité plus haut quand on clique sur le bouton du userform et pouvez vous me donnez un exemple de base de comment formuler ma requête pour enregistré dans le classeur fermé en partant des objet du userform )

j'utilise excel et vba depuis 4 jours autant vous avouez que je suis pire qu'un débutant avec ce logiciel et ce langage

Merci si vous pouvez m'aider

re , désolé du double post mais personne n'a posté de reponse et comme j'ai "avancé" un peu je voulais vous montrez un peu plus ce que j'essaye de faire

donc j'ai un peu modifié la fonction qui permet de me connecter au classeur en essayant d'ajouter des valeurs dans le classeur fermé de cette façon :

Sub RequeteClasseurFerme()

Dim Cn As ADODB.Connection

Dim Fichier As String

Dim Feuille As String, strSQL As String

Dim PrixUnit As Integer

Dim LeNom As String, lePrenom As String

Dim LaDate As String

'Définit le classeur fermé servant de base de données

Fichier = "C:\Documents and Settings\konce\Bureau\bdd.xls"

'Nom de la feuille dans le classeur fermé

Feuille = "Feuil1"

LaDate = "test"

LeNom = "NomTest"

lePrenom = "PrenomTest"

PrixUnit = 40

Set Cn = New ADODB.Connection

'--- Connexion ---

With Cn

.Provider = "MSDASQL"

.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _

"DBQ=" & Fichier & "; ReadOnly=False;"

.Open

End With

'-----------------

'

'... la requête ...

'

strSQL = "INSERT INTO [" & Feuille & "$] " _

& "VALUES (#" & LaDate & "#, " & _

"'" & LeNom & "', " & _

"'" & lePrenom & "', " & _

PrixUnit & ")"

Cn.Execute strSQL

'--- Fermeture connexion ---

Cn.Close

Set Cn = Nothing

End Sub

donc je déclare 4 variable et les initialise avec soit une chaine de caractère soit un nombre puis via une requete SQL et de INSERT INTO j'essaye d'ajouter des valeurs dans le classeur fermé servant de BDD

je fais appel a la fonction via le userform et son bouton qui permet d'enregistré de cette façon :

Private Sub record_Click()

ThisWorkbook.RequeteClasseurFerme

End Sub

et donc quand je lance mon application et appuie sur enregistré j'obtiens une erreur qui est : Erreur d'exécution'-2147217913(8J040e07)': Erreur Automation et quand je fais debogage pas a pas le programme plante au niveau du "Cn.Execute strSQL" de la fonction RequeteClasseurFerme si dessus , quelqu'un aurait-il déjà été confronté a ce problème ?

PS : précision par rapport a mon classeur fermé , j'ai juste rempli les deux première lignes des 4 première colonnes en gros j'ai mis 4 nom au 4 première cellule de la première ligne puis 4 valeur au 4 première cellule de la 2eme ligne , je n'ai appliqué aucun format au cellule

Rechercher des sujets similaires à "ecrire classeur ferme formulaire"