Recordset access sous Excel

creal69360

XLDnaute Junior
Bonjour,

Je souhaiterais créer une application qui me permettrait à partir d'Excel d'aller modifier des informations dans une base Access (On la sélectionne au départ à l'aide d'une fenêtre parcourir) à l'aide de recordset. En sélectionnant un client, on pourrait modifier les informations qui le concernent. Je récupère donc dans une liste le nom des clients, on sélectionne alors le nom pour lequel on peut modifier les données mais je bloque sur la syntaxe sous SQL. Voici mes fichiers en pièces jointes.

Merci.
 

Pièces jointes

  • creal69.xlsm
    63.8 KB · Affichages: 33

Herdet

Nous a quitté
Repose en paix
Re : Recordset access sous Excel

Bonsoir,
Tu auras peut être une réponse par ADO ou DAO dans la FAQ Excel du site de Developper.com
FAQ Excel
Rubrique : Piloter Access ... Comment ajouter un enregistrement dans une table Access?

Il y a énormément de tutoriaux, procédures, fonctions et méthodes sur beaucoup de logiciels dont Excel.
Une mine de renseignements !

Cordialement
Robert
 

creal69360

XLDnaute Junior
Re : Recordset access sous Excel

Merci,
Pas facile les recordset, j'ai un soucis avec mon code pour modifier un enregistrement je souhaiterais pouvoir récupérer les données dans un userform afin de pouvoir ensuite les modifier je fais donc plusieurs requêtes qui vont me recuperer à l'aide du nom ,prenom et numero d'un candidat me recuperer l'ensemble des données qui le concernent première requête qui recupere les données du candidat pas de soucis mais ensuite ça me met une erreur de type voici le code:

Sub affichage_modification()
Dim requete_suivis As String
Dim requete_candidat As String

Dim requete_client As String
Dim Db, db1 As Database
Dim rs_suivis As Recordset
Dim rs_candidat, rs_client As Recordset
Dim num_ville, num_region, num_client As Integer
Set Db = OpenDatabase(chemin)


requete_candidat = "select * from [CANDIDATS] where CANDIDATS.no_candidat= " & num_cible
Set rs_candidat = Db.OpenRecordset(requete_candidat, dbOpenDynaset)

num_ville = rs_candidat(3)
num_region = rs_candidat(4)
num_client = rs_candidat(5)

requete_suivis = "select * from SUIVIS where SUIVIS.no_candidat=" & Str(num_cible) & ""
Set rs_suivis = Db.OpenRecordset(requete_suivis, dbOpenDynaset)


rs_suivis.Close
rs_candidat.Close



Db.Close
End Sub
 

Herdet

Nous a quitté
Repose en paix
Re : Recordset access sous Excel

première requête qui recupere les données du candidat pas de soucis mais ensuite ça me met une erreur de type voici le code:

requete_candidat = "select * from [CANDIDATS] where CANDIDATS.no_candidat= " & num_cible
.....
requete_suivis = "select * from SUIVIS where SUIVIS.no_candidat=" & Str(num_cible) & ""
Bonsoir,
Effectivement le traitement des recordset n'est pas facile car très rigide mais très puissant.
La table SUIVIS doit être entre crochets
requete_suivis = "select * from [SUIVIS] where SUIVIS.no_candidat=" & Str(num_cible) & ""

A+
Robert
 

creal69360

XLDnaute Junior
Re : Recordset access sous Excel

Re, j'ai un peu avancé mais j'ai toujours des recordset qui ne fonctionnent pas, j'aurai bien envie de vous montrer ma base ACCESS mais je ne peux pas car pas possible de mettre en pièce jointe.

voici mon code ( ça bloque a partir de requete_cdp (erreur type) puis client (trop peu de paramètre: 1attendu):
Dim requete_suivis As String
Dim requete_candidat As String
Dim requete_bu As String
Dim requete_client As String
Dim requete_consultant As String
Dim requete_presta As String
Dim requete_region As String
Dim requete_cdp As String
Dim Db, db1 As Database
Dim rs_suivis As Recordset
Dim rs_candidat, rs_client, rs_bu, rs_consultant, rs_presta, rs_region, rs_cdp As Recordset
Dim num_ville, num_region, num_client, num_bu, num_consultant, num_presta, num_cdp As Integer
Set Db = OpenDatabase(chemin)




requete_candidat = "select * from [CANDIDATS] where CANDIDATS.no_candidat= " & num_cible
Set rs_candidat = Db.OpenRecordset(requete_candidat, dbOpenDynaset)

num_ville = rs_candidat(4)
num_region = rs_candidat(5)
num_client = rs_candidat(3)

requete_region = "select * from [LIEUX SUIVI REGION] where [LIEUX SUIVI REGION].code_suivi_region=" & num_region
Set rs_region = Db.OpenRecordset(requete_region, dbOpenDynaset)
User_modification_client.zt_region = rs_region(1)
num_cdp = rs_region(2)


requete_cdp = "select * from [CHEFS PROJET] where [CHEFS PROJET].code_chef=" & num_cdp
Set rs_cdp = Db.OpenRecordset(requete_cdp, dbOpenDynaset)

User_modification_client.zt_chef = rs_cdp(1)
User_modification_client.E_mail_cdp = rs_cdp(3)
User_modification_client.tel_cdp = rs_cdp(4)

requete_client = "select * from [CLIENTS] where [CLIENTS].nocli=" & num_client
Set rs_client = Db.OpenRecordset(requete_client, dbOpenDynaset)
User_modification_client.zt_nom_dossier = rs_client(1)


rs_client.Close
rs_candidat.Close





requete_suivis = "select * from [SUIVIS] where SUIVIS.no_candidat=" & Str(num_cible) & ""

Set rs_suivis = Db.OpenRecordset(requete_suivis, dbOpenDynaset)

'User_modification_client.zl_dem = rs_suivis(3)
'User_modification_client.zt_date_fin_reelle = rs_suivis(4)
'User_modification_client.zl_presta = rs_suivis(5)
num_consultant = rs_suivis(1)
num_presta = rs_suivis(6)
rs_suivis.Close

requete_presta = "select * from[PRESTATIONS] where PRESTATIONS.code_presta=num_presta"
Set rs_presta = Db.OpenRecordset(requete_presta, dbOpenDynaset)
User_modification_client.zl_presta = rs_presta(1)


requete_consultant = "select * from [CONSULTANTS] where CONSULTANTS.no_consultant=" & num_consultant
Set rs_consultant = Db.OpenRecordset(requete_consultant, dbOpenDynaset)
User_modification_client.zt_consultant = rs_consultant(1)
User_modification_client.zt_prenom_consultant = rs_consultant(2)
num_bu = rs_consultant(4)


requete_bu = "select * from [BU] where BU.code_bu= " & num_bu
Set rs_bu = Db.OpenRecordset(requete_bu, dbOpenDynaset)
User_modification_client.zl_bu = rs_bu(1)

Db.Close
End Sub
 

Herdet

Nous a quitté
Repose en paix
Re : Recordset access sous Excel

Normalement la valeur du WHERE doit être encadrée d'une simple cote
requete_suivis = "select * from [SUIVIS] where SUIVIS.no_candidat='" & Str(num_cible) & "'"
ou
requete_suivis = "select * from [SUIVIS] where SUIVIS.no_candidat='" & num_cible & ""

Je n'ai pas trop de pratique dans le sens Excel-Access mais d'un fichier Excel à un autre fichier Excel fermé ça fonctionne avec ça.
Exemples :
SELECT distinct CLI_PRENOM FROM T_CLIENT WHERE TIT_CODE = 'M.'
SELECT * FROM [TRA_DESIGN] WHERE [BU] <>'Aquaflo' ORDER BY [EQUIPEMENT OU PRESTATION] ASC;
SELECT * FROM [TRA_DESIGN] WHERE [BU] <>'Aquaflo' AND [TRA_DESIGN] >= '15' ORDER BY [EQUIPEMENT OU PRESTATION] ASC;

On peut envoyer des gros fichiers avec un lien URL par Accueil de Cjoint.com (8,1 Mo max) ou par Free - Envoyez vos documents (1 Go par Web et 10 Go max par FTP )
 

Discussions similaires

Statistiques des forums

Discussions
312 480
Messages
2 088 756
Membres
103 947
dernier inscrit
Quentin_sf