PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Procédure CallBack de TableFormuleAjoute()
Procédure CallBack de TableFormuleAjoute()
Débuté par Philippe Mounier, 04 avr. 2025 17:05 - 2 réponses
Posté le 04 avril 2025 - 17:05
Bonjour,

La fonction TableFormuleAjoute() utilise des procédures de Init, d'itération, de fin.
Dans la procédure d'itération, on reçoit le valeur de l'itération précédente (Accumulateur) ainsi que la valeur de la colonne ValeurCol.

J'utilise des colonnes clonées avec un nom indicé COL_Qte_1, COL_Qte_2, COL_Qte3 ...etc... sachant que seule COL_Qte_1 se trouve dans la table à l'origine. Comme j'ai besoin de faire un ratio entre 2 colonnes, il me faut savoir en plus de la valeur (ValeurCol), le nom ou la colonne qui contient cette valeur. Y a t'il un moyen ?

Merci de votre retour
Membre enregistré
860 messages
Posté le 05 avril 2025 - 03:05
Bonjour,
je ne comprends pas cette partie de la question : " il me faut savoir en plus de la valeur (ValeurCol), le nom ou la colonne qui contient cette valeur".

La réponse ne correspond peut-être pas à vos attentes, mais vous pouvez accéder aux colonnes clonées avec ChampClone en utilisant les indirections.
https://doc.pcsoft.fr/fr-FR/?1512005

par exemple avec cette modification de l'exemple de l'aide en ligne :
https://doc.pcsoft.fr/fr-FR/?1000022361

TableFormuleSupprimeTout(Table1)
nLigne est entier
nLigne = TableFormuleAjoute({"Table1.Prix_1", indChamp}, "Moyenne positive", ProcInit, ProcAjout, ProcFin)
// Changement de la couleur de fond de la ligne du calcul personnalisé
Table1.Prix[nLigne]..CouleurFond = RougeClair

nCompteur est entier

PROCEDURE INTERNE ProcInit()
nCompteur = 0
RENVOYER 0
FIN

PROCEDURE INTERNE ProcAjout(Accumulateur, ValeurCol)
// Ignore les négatifs ou NULL
valcolPrix_1 est un entier = {"Table1.Prix_1", indChamp}
Trace(valcolPrix_1)
SI (ValeurCol <= 0) RENVOYER Accumulateur
nCompteur++
RENVOYER Accumulateur + ValeurCol
FIN

PROCEDURE INTERNE ProcFin(Accumulateur)
SI nCompteur = 0 ALORS RENVOYER 0
// Calcul de la moyenne
RENVOYER Accumulateur/nCompteur
FIN


La table est nommée "Table1", "Prix_1" est une colonne clonée avec ChampClone.

Cdlt
Membre enregistré
4 216 messages
Posté le 06 avril 2025 - 13:13
Bonjour,
Je reformule.
Tu désires connaitre le nom de la colonne d'une cellule donnée. (e.g. la cellule (5,3) contient la valeur ValCol, tu veux le nom de la colonne 3.)
C'est le boulot de TableEnumèreColonne.

--
Il y a peut être plus simple, mais, ça tourne
Quand tout a échoué, utilise l'option RTFM