PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → TableCherche avec une Table filtrée
TableCherche avec une Table filtrée
Débuté par khlid, 21 déc. 2025 16:22 - 1 réponse
Posté le 21 décembre 2025 - 16:22
Bjr a tous
SVP
Filtre sur une colonne Valeurs commençant par "G" toutes les lignes commencent par "G"
puis TableCherche "commencePar" sur la colonne valeur = "Bact"
TableCherche me donne une valeur et selectionn une ligne fausse
que faire
merci
Membre enregistré
2 302 messages
Posté le 22 décembre 2025 - 10:41
Bonjour,

De ce que j'en sais, les filtres ne sont pas cumulatifs. C'est pourquoi on utilise souvent des tables alimentées par des requêtes paramétrées.

Réponse de CoPilot :
En WinDev, il n’existe pas de fonction native pour appliquer directement un filtre automatique sur deux colonnes en même temps dans un champ Table.
Cependant, il y a plusieurs approches simples pour contourner cette limite.

1️⃣ Colonne masquée avec concaténation (solution la plus courante)

Créez une colonne invisible dans votre Table.
Lors du chargement des données, concaténez les valeurs des deux colonnes que vous voulez filtrer.
Appliquez ensuite TableActiveFiltre() uniquement sur cette colonne masquée.
// Exemple : concaténation Nom + Ville
POUR TOUT MaTable
MaTable.ColonneMasquee = MaTable.Nom + " " + MaTable.Ville
FIN

// Filtre sur la colonne masquée
TableActiveFiltre(MaTable, "ColonneMasquee", "*recherche*")


2️⃣ Filtre manuel avec TableFiltre()
Vous pouvez écrire une condition personnalisée qui combine deux colonnes :
TableFiltre(MaTable, "Nom~='*recherche*' OU Ville~='*recherche*'")


3️⃣ Filtrage en mémoire (Table par programmation)
Si votre Table est chargée en mémoire, vous pouvez filtrer via un parcours et masquer les lignes qui ne correspondent pas :
POUR i = MaTable..Occurrence À 1 PAS -1
SI PAS (MaTable[i].Nom~="*recherche*" OU MaTable[i].Ville~="*recherche*") ALORS
TableSupprimeLigne(MaTable, i)
FIN
FIN

💡 Astuce : La méthode de la colonne masquée est souvent la plus performante, surtout avec un grand volume de données, car elle évite de multiplier les conditions de filtrage.

Suite plus détaillée sur demande à CoPilot :-)

--
Bon dev,
Jean-Pierre