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