Bonjour,
J'ai récemment appris le Visual Basic mais maintenant que je l'utilise avec Access j'ai quelques problèmes, notamment que le je veux indiquer des champs dans des tables etc... car ce n'est pas pareil qu'avec Excel, j'ai un peu de mal. J'espère donc que vous me pardonnerez si jamais vous trouviez mes erreurs grossières.
Avant de vous expliquer mon problème, je vais vous expliquer ce compte réaliser :
Je possède une table nommée "t_Card" dans laquelle je possède une colonne nommée "i_Card" (qui correspond à la clé primaire de cette table).
Je possède une seconde table nommée "t_Channel" dans laquelle je possède encore cette colonne "i_Card", ce sont deux tables liées, à chaque valeur de i_Card dans la table t_Card, correspond un ou plusieurs enregistrement de la table t_Channel.
J'aimerais pouvoir compter le nombre d'enregistrements non vides de la table t_Channel pour chaque valeur de i_Card de la table t_Card et ensuite affecter ce nombre dans une nouvelle colonne de la table t_Card pour chaque enregistrement.
(Désolé si je m'explique mal, mais je en gros je souhaiterais afficher pour tous les enregistrements de la table t_Card, le nombre de d'enregistrements non vides qui leurs corresponds par rapport à la table t_Channel)
Voici le code que j'ai réalisé :
Le message se trouve au niveau du "For Each...", voici l'erreur que j'obtiens :
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
16
17
18
19
20
21
22
23
24 Sub essai() Dim Card As Object Dim t_Card As DAO.TableDef Dim db As DAO.Database Set db = CurrentDb Set t_Card = db.TableDefs("t_Card") For Each Card In t_Card 'Pour chaque enregistrement de la table t_card, i prend la valeur de i_card de la table t_card et 'affecte la variable nbre_channels_occupes dans le champ channels_occupes de la table t_card i = i_Card.Value 'Compte le nombre total de channels dans la table t_Channel pour t_card.i_card=t_channel.i_card nbre_total_channels = DCount("[i_Channel]", "t_Channel", "[i_Card] ='& i&'") 'Compte le nombre de channels non occupés dans la table t_Channel pour t_card.i_card=t_channel.i_card nbre_channels_vides = DCount("[i_Channel]", "t_Channel", "IsNull([i_Signal_input])") 'Calcule le nombre de channels occupés dans la table t_Channel pour t_card.i_card=t_channel.i_card nbre_channels_occupes = nbre_total_channels - nbre_channels_vides 'Pour chaque valeur de i_Card de la table t_Card, le champ Total_Channels prend la valeur de la variable nbre_channels_occupes If t_Card.Fields("i_Card") = i Then t_Card.Fields("Total_Channels") = nbre_channels_occupes End If Next Card End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Opération non autorisée pour ce type d'objet.
Pourriez-vous m'indiquer un élément de réponse ? Merci beaucoup !
Partager