PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Suppression doublons dans liste d'entiers
Suppression doublons dans liste d'entiers
Iniciado por Patrick PELISSON, 03,abr. 2020 12:37 - 6 respuestas
Miembro registrado
108 mensajes
Publicado el 03,abril 2020 - 12:37
Bonjour,
Voici mon problème que je vous soumets dans l'attente d'une solution…

Ma fenêtre affiche plusieurs tables dans lesquelles l'utilisateur peut sélectionner différentes valeurs qui sont des entiers. A la validation de la page, toutes les champs sélectionnés dans les différentes tables sont répartis dans différentes listes triées par ordre croissant.

Toutefois, en fonction des sélections, il peut arriver que plusieurs valeurs identiques soit dans la liste alors qu'il me faut conserver aucun doublon…

Questions :
Comment supprimer les doublons d'une liste d'entier ???
Dois-je transformer toutes mes listes et tables et mes sélections en Chaine plutôt qu'en entier pour pouvoir utiliser la fonction "TableSupprimeDoublon" mais alors comment trier ma table par ordre croissant ??

Merci d'avance de vos réflexion et de votre aide...

--
Patrick PELISSON
Miembro registrado
4.362 mensajes
Publicado el 03,abril 2020 - 14:19
Bonjour,
Souvent, il est plus simple de ne pas ajouter que de supprimer. Pourquoi ne pas vérifier l'existence de la valeur avant de l'ajouter ?

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
108 mensajes
Publicado el 03,abril 2020 - 15:18
En effet, mais alors comment vérifier l'existence de la valeur dans une liste ?
Mes listes ne comportent qu'une seule colonne triée du plus petit vers le plus grand. La commande 'LitRecherche' ne fonctionne pas sur des liste.
Avez-vous une idée ?
Cordialement

--
Patrick PELISSON
Miembro registrado
36 mensajes
Publicado el 03,abril 2020 - 16:01
Bonjour.
La fonction listeChercher d'une liste ou bien <nom de la liste>.cherche va te permettre de savoir si la valeur est déjà existante.

J'espère t'avoir aidé un peu.

Christian
Miembro registrado
1.640 mensajes
Publicado el 03,abril 2020 - 16:36
Hello,

Sinon, si jamais pcsoft n'avait pas fournit de fonction "toute faite", parcourir la liste pour savoir si la valeur est déjà présente ne devrait pas être compliqué ?

Procedure _ListeCherche(ChampListe,MaValeur)
POUR i=1 _A_ ChampListe..occurence
SI ChampListe[i] = MaValeurALORS RENVOYER Vrai
FIN
RENVOYER Faux
Miembro registrado
108 mensajes
Publicado el 03,abril 2020 - 16:40
Bonjour Christian,
Je viens de tester ton idée mais cela plante… au motif que "La commande est invalide sur le champ LISTE_POUMON car ce n'est pas une liste image."
Voici mon code
SI TABLE_ETOILE.COL_Point[1].Sélectionnée ALORS
nIndiceListe = ListeCherche(LISTE_POUMON, "7")
SI nIndiceListe=-1 ALORS ListeAjoute(LISTE_POUMON,7,"G")
FIN

Je précise que le 7 avec ou sans guillemets provoque la même anomalie…
Merci d'avance de votre aide.

--
Patrick PELISSON
Miembro registrado
108 mensajes
Publicado el 03,abril 2020 - 16:55
Avec l'aide de François C, voici le code qui fonctionne…
POUR i=1 _À_ ListeOccurrence(LISTE_POUMON)
SI LISTE_POUMON[i] = TABLE_Y.COL_Point[1] ALORS nIndiceListe=1
FIN
SI nIndiceListe=0 ALORS ListeAjoute(LISTE_POUMON,TABLE_Y.COL_Point[1])


Merci de votre aide.

--
Patrick PELISSON