Bonjour à tous,
Je viens de fêter mon premier mois d'utilisation d'access et du VBA. Je ne suis donc pas encore totalement au point...
J'ai un petit problème que je n'arrive pas à résoudre sur l'un de mes formulaires pour une application de suivi d'affaire. J'ai une liste déroulante et un champ dont je souhaite que la valeur par défaut change en fonction de la valeur de la liste déroulante. Pour cela je pense utiliser une requête SQL.
Voici les tables:
CodeNatureAnalytique, avec un champ CodeNA (texte) et un champ famille (texte)
FamilleCode, avec un champ NomFamille (texte) et un champ CoeffCible (Numérique), qui classe les codes par famille, chaque famille ayant un coeffCible
Prestation, avec un champ Code (texte) et un champ CoeffRetenu (Numérique). Le coeff retenu n'est pas forcément égal au coeff cible, mais il doit être proposé.
Les deux premières tables sont des tables de données "constantes", l'utilisateur n'agit pas dessus directement.
Le formulaire sur lequel j'ai ce problème est le formulaire lié à la table prestation. Il permet la saisie des données qui rempliront cette table, il y a donc une zone déroulante Code qui montre tous les CodeNA de la table CodeNatureAnalytique et une zone de texte Coeffretenu.
But de la manip: En fonction de la valeur de code choisie dans la liste, mettre la valeur de coeffcible de sa famille dans la case coeffretenu (qui reste donc modifiable)
J'ai mis le code suivant (trouvé dans "Access 2003 et VBA pour les nuls") sur l'événement AfterUpdate de la liste déroulante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Private Sub Modifiable16_AfterUpdate() Dim mysql As String mysql = "SELECT [Code de Nature Analytique].Code, [Famille de codes].CodeFamille, [Famille de codes].CoeffCible FROM [Famille de codes] INNER JOIN [Code de Nature Analytique] ON [Famille de codes].CodeFamille = [Code de Nature Analytique].Famille WHERE (([Famille de codes].CodeFamille)=[code de nature analytique].[famille]) AND [Code de Nature Analytique].Code = '" & Me.Modifiable16.Value & "'" Dim cnn As ADODB.recordset Set cnn = CurrentProject.Connection Dim myRecord As New ADODB.recordset myRecord.ActiveConnection = cnn myRecord.Open mysql Me.Coeff_de_gestion.DefaultValue = myRecord.Fields(2).Value End Sub
Hier, le bout de code ne renvoyait pas de bug, mais n'arrivait pas à remplir la case. Aujourd'hui, après réécriture, j'ai une incompatibilité de type sur la ligne "set cnn..."
Bref, je suis dans l'impasse!
Il y a forcément un truc que je ne comprends pas ou que j'ai mal fait, mais quoi...
Merci d'avance de votre aide.
Flu
Partager