Merci R&B pour ton aide
Si j'ai bien compris tu me proposes d'utiliser EnumèreChamp, pour vérifier que le champ existe bien sur la fenêtre en cours. Je n'avais pas pensé faire ce test. Mais je n'ai pas envie de faire une boucle pour chercher tout les champs, et en plus EnumèreChamp ne liste pas les champs dans des onglets et dans le fenêtre en même temps. En creusant cette l'idée, j'ai trouvé que ParentObjet marchait mieux
Mais reste que dans ton exemple ChampExiste, ne résouts pas tout les problèmes
exemple dans la procédure suivante (version simplifiée de mon 1er post) :
// cette procédure retourne le nom du champ sous forme de chaine, qu'il doit rentré avec ou sans guillemets
PROCEDURE MaProcedure(x_monChamp)
s_nomChamp est un chaîne
SI PAS ChampExiste(x_monChamp) ALORS
s_nomChamp=x_monChamp..Nom
SINON
// c'est un champ
s_nomChamp=x_monChamp
FIN
RENVOYER s_nomChamp
tests de MaProcedure :
// Si MonChamp contient une chaine vide ca va donner
MaProcedure("MonChamp") // ==> "MonChamp"
MaProcedure(MonChamp) // ==> "MonChamp"
// Mais si MonChamp contient "MonAutreChamp", qui est le nom d'un champ valide alors
MaProcedure("MonChamp") // ==> "MonChamp"
MaProcedure(MonChamp) // ==> "MonAutreChamp"
Voici une version ce que j'ai trouvé pour que cela marche dans tout les cas :
PROCEDURE MaProcedure2(x_monChamp)
s_nomChamp est un chaîne
QUAND EXCEPTION DANS
s_nomChamp=x_monChamp..Nom
FAIRE
s_nomChamp=x_monChamp
FIN
RENVOYER s_nomChamp
J'aurais aimé évité d'utiliser les exceptions, mais je n'ai pas trouvé mieux.
Encore merci R&B, pour le temps passé à me répondre.