Lecture d'une valeur dans une base de donnée Access

Bonjour,

J'essaie de lire une valeur précise dans une base de donnée Access. Je change le champ recherché (Field), ça fonctionne. Le seul problème, c'est que ma fonction retourne toujours la valeur de la première ligne de ma base de donnée. C'est quand je change la valeur de Value qu'il y a aucun changement. J'ai mis la ligne que je crois qui occasionne problème en rouge.

Merci d'avance de m'aider.

Function ReadDatabase(DatabaseFilePath As String, Table As String, Column As String, Value As String, Field As String) As Variant

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'¤ Arguments de la fonction ¤

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'DatabaseFilePath Chemin de la base de donnée

'Table Nom de la table

'Column Nom du champ de référence

'Value Valeur de référence

'Field Nom du champ recherché

'ReadDatabase("C:\Entreprise\DB.accdb";"Factures";"N° de Facture";"1";"TPS à payer")

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'¤ Références nécessaire ¤

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'Microsoft Visual Basic pour Application

' --> Outils

' ---> Références…

' Microsoft ActiveX Data Objects 6.1 Library

' Microsoft ADO Ext. 6.0 for DLL and Security

Dim AccessDatabase As String

Dim Command As New ADODB.Command

Dim Connection As ADODB.Connection

Dim Recordset As ADODB.Recordset

Dim SQL As String

AccessDatabase = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DatabaseFilePath & ";"

Set Connection = New ADODB.Connection

Connection.Open AccessDatabase

Set Recordset = New ADODB.Recordset

Recordset.Open Table, Connection, adOpenKeyset, adLockOptimistic, adCmdTable

SQL = "SELECT * FROM Table WHERE Column = 'Value'"

ReadDatabase = Recordset.Fields(Field)

Recordset.Close

Set Recordset = Nothing

Connection.Close

Set Connection = Nothing

End Function

Martin

Bonjour Martin,

Tout est expliqué dans les arguments de la fonction, pourquoi as-tu modifier le code

A+

Bonjour,

Je suis nouveau sur ce forum et dans VBA.

(Je compte sur votre aide pour me remettre sur le droit chemin si je commets quelques erreurs de jeunesse )

Je cherche à appeler (depuis un fichier excel 2016) des données qui se trouvent dans une base de données Acces 2016

(Voir fichiers joints). En résumé, le fichier excel se présente de la manière suivante en col A le "nomduproduit" et en col B la "couleurduproduit" à faire afficher en cherchant la valeur dans une base Access.

Cette base est faite de 800 articles (en lignes) avec une 100ène de caractéristiques (en colonne) dont la couleur à trouver pour l'article correspondant.

J'ai repris l'exemple ci-dessous qui avait été laissé dans le post, mais celui-ci n'affiche effectivement que la valeur du premier enregistrement (peu importe le produit en référence).

Au préalable j'avais des erreurs concernant les Références-VBAProject (Dans VBA Menu outils/Références..)

Cf copie écran des références actuelles sélectionnées.

Au vu de la dernière remarque de BrunoM45, il semble que ce code est été modifié.

Serait-il possible d'avoir de l'aide d'une personne pour la correction de ce code ?

Merci d'avance

Salutations

Function ReadDatabase(DatabaseFilePath As String, Table As String, Column As String, Value As String, Field As String) As Variant

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'¤ Arguments de la fonction ¤

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'DatabaseFilePath Chemin de la base de donnée

'Table Nom de la table

'Column Nom du champ de référence

'Value Valeur de référence

'Field Nom du champ recherché

'ReadDatabase("C:\Entreprise\DB.accdb";"Factures";"N° de Facture";"1";"TPS à payer")

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'¤ Références nécessaire ¤

'¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

'Microsoft Visual Basic pour Application

' --> Outils

' ---> Références…

' Microsoft ActiveX Data Objects 6.1 Library

' Microsoft ADO Ext. 6.0 for DLL and Security

Dim AccessDatabase As String

Dim Command As New ADODB.Command

Dim Connection As ADODB.Connection

Dim Recordset As ADODB.Recordset

Dim SQL As String

AccessDatabase = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & DatabaseFilePath & ";"

Set Connection = New ADODB.Connection

Connection.Open AccessDatabase

Set Recordset = New ADODB.Recordset

Recordset.Open Table, Connection, adOpenKeyset, adLockOptimistic, adCmdTable

SQL = "SELECT * FROM Table WHERE Column = 'Value'"

ReadDatabase = Recordset.Fields(Field)

Recordset.Close

Set Recordset = Nothing

Connection.Close

Set Connection = Nothing

End Function

2018 01 08 18h03 46 acces

Bonjour,

Tu as intérêt à ouvrir un nouveau sujet ... car se greffer sur un sujet clos il y a trois ans ... ne va pas t'aider ...

Ok Merci du conseil, je ne voulais pas faire de doublons.

A+

Rechercher des sujets similaires à "lecture valeur base donnee access"