Syntaxe nom de champ
RésoluCabinfi Messages postés 14 Statut Membre -
Bonjour, j'ai une liste de champs nommés A,B,C etc et une autre nommés TA,TB, etc. je voudrais masquer les champs T & X selon la valeur du champ X. J'ai essayé le code suivant:.
If A>0 Then
T & A.visible= False
End If
j'ai essayé "T" & A, '"T" & A'.... entre autre, à priori, je n'ai pas trouvé la bonne syntaxe. Un coup de main serait le bienvenu. Merci
Windows / Firefox 105.0
9 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour,
ce sont des champs d'une table ou des contrôles d'un formulaire?
-
Bonjour yg_be,
ce sont des champs de formulaire, plus précisément les champ A,B, etc sont des champs d'une table, et les champs TA, TB ... sont des champs caculés de formulaire Tous les noms sont donnés de la même façon: à A correspont TA, à B, correspont TB et ainsi de suite. Le but final étant de créer une fonction du genre
function montrer(nom_de_champ as double) If nom_de_champ >0 Then (T & nom_de_champ).Visible= True End IfQue j'appellerai en quittant les champs A,B ou C
sub quitter () montrer(A) end sub -
Le problème est dans la syntaxe appelant le champ
"T" + nom_de_champ j'ai testé
Function Diff(prod) On Error Resume Next If prod > 0 Then "T" + nom_de_champ.visible = True End If End Functionqui me répond, sans grande surprise, "erreur de syntaxe".
Je précise que je ne suis abslument pas programmeur, mais un simple autodidacte occupant une partie de son temps libre de retraité ;)
-
DSl, c'est le nom de la fonction que j'avais en test dans ma BD . Mais il n'y a que le nom qui change. Bien sûr, j'ai testé ton code : avec Me, il me dit utilisation incorrecte du mot clé Me. Si j'enlève Me. le msg devient "Sub ou Fonction non, définie" en me surlignant "Controls"
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
En effet, je ne l'avais pas mises dans le formulaire. Maintenant le msg est Microsoft Access ne trouve pas le champ 5 auquel il est fait référence dans votre expression et me surligne Me.Controls(Prod)
Function Montrer(prod As String) If Me.Controls(prod) > 0 Then Me.Controls("T" + prod).visible = True End If End Function Private Sub N_Exit(Cancel As Integer) Montrer (N) End Sub -
OK pour Option Explicit, c'est fait, ainsi que le msg d'erreur. N contient une valeur numérique au format standard, le champ TN calculé est un nombre décimal au format standard également
-
Avec ce code, ce que je veux faire fonctionne trés bien (les champs de style T+NomDuChamp sont par défault non visibles:
Private Sub P2O5_Exit(Cancel As Integer) If Me.P2O5 > 0 Then Me.TP2O5.visible = True Else Me.TP2O5.visible = False End If End SubIl y a 15 champs "A" concernés, la fonction devant permettre d'éviter quelques lignes de code. Mais peut-être que je me complique la vie pour rien ;)
-
N est le nom d'un des 15 champs dont la valeur doit conditionner la propriété visible de leur correspondant de forme T & NomDeCHamp: exemple : si N est > à 0 alors Tn doit être visible,idem pour P2O5 et TP2O5 etrc. J'espère que je suis assez clair . En fait, TN calcul et verifie le dosage de matière déclaré dans N, TP2O5 calcul et vérifie le dosage de P2O5 et ainsi de suite
Il me faut m'absenter, je reprendrais plus tard dans l'après-midi. Merci pour ta patience et le temps donné
-
En fait, N fait référence au contrôle du formulaire, ce que tu appelles "champ".
Dans le code, quand on utilises N, c'est équivalent à N.Value, cela retourne la valeur dans le contrôle.
Tu veux récupérer le nom du contrôle, afin de pouvoir y ajouter "T" devant. Il faut donc faire soit "N", soit N.Name.
-
-
Ça y est, grace à tes dernières remarques, j'ai trouvé qqchose qui fonctionne:
Option Compare Database Option Explicit Dim prod As String _______________________________________________ Function Montrer(prod As String) As String On Error Resume Next If Me.Controls(prod) > 0 Then Me.Controls("T" + prod).visible = True Me.Controls("DifT" + prod).visible = True Else Me.Controls("T" + prod).visible = False Me.Controls("DifT" + prod).visible = False End If End Function _____________________________________________ Private Sub N_Exit(Cancel As Integer) prod = Me.N.name Montrer (prod) End SubMerci encore pour le temps que tu m'as consacré.
je passe en résolu