PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Supprimer les doublons dans une liste
Supprimer les doublons dans une liste
Débuté par alain.defonpre, 26 juin 2021 18:54 - 14 réponses
Posté le 26 juin 2021 - 18:54
Bonjour,

Dans une liste remplie par un simple fichier externe constituée de lignes d'un seul mot et séparées par un RC
Item1
Item2
Item3
Item1
Item1

je souhaite supprimer les doublons en parcourant la liste, une idée, un bon de code SVP.

Alain
Membre enregistré
357 messages
Posté le 27 juin 2021 - 07:36
Il faut utiliser les fonction disponible sous Windev soit TableauSupprimeDoublon() soit ChaîneSupprimeDoublon()

Tab_Item est un tableau de chaîne
Str_ChaineItem est une chaîne
// On charge le fichier externe dans la chaine
// On peut supprimer par la fonction ChaineSupprimeDoublon
ChaîneSupprimeDoublon(Str_ChaineItem, RC, ccNormal)
//Ensuite on affecte la chaine à la liste
//
// ****************************************
//
// Ou bien on passe par un tableau
CSVVersTableau(Str_ChaineItem, Tab_Item, RC)
TableauSupprimeDoublon(Tab_Item)
//Ensuite on affecte le tableau à la liste


--
Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements.
Posté le 27 juin 2021 - 08:59
Merci Bernard de votre réponse,

Après recherche, la fonction "ChaîneSupprimeDoublon" n'existe pas dans l'aide de WD...

Quant à la fonction "TableauSupprimeDoublon" elle est disponible qu'a partir de la versions 26 de WD, et je ne dispose pas de cette dernière.

J'essaie de réaliser une boucle classique mais sans résultat.
Une autre idée.

Alain
Membre enregistré
293 messages
Posté le 27 juin 2021 - 19:23
Fait voir ton code de remplissage du tableau

--
Maître de la POO
Membre enregistré
3 748 messages
Posté le 27 juin 2021 - 20:51
Membre enregistré
4 317 messages
Posté le 27 juin 2021 - 23:55
Bonjour,
TableauSupprimeDoublon est disponible depuis WD 16, mais en effet, ChaineSuppimeDooublon est inconnu au bataillon. Sans doute une fonction d'un composant.

--
Il y a peut être plus simple, mais, ça tourne
Posté le 28 juin 2021 - 08:11
Merci de vos réponses.

Effectivement la fonction "TableauSupprimeDoublon" n'est disponible que depuis WD 16, pour ma part je suis encore sous WD 15, hélas....
Mais bon j'ai pu m'en sortir avec et deux tables et une moulinette ci-dessous, ça peut servir à quelqu'un...

laligne est une chaîne
res est un entier

POUR indice = 1 _A_ ListeOccurrence(TableInitiale) // On parcours la rubrique qui contient les données avec boulons
res++
laligne = TableInitiale[res]
test est un entier = TableCherche(TableFiltrees.DonneeSSansDoublon,laligne)
SI test = -1 ALORS
TableAjoute(TableFiltrees,laligne) // Si l'item n'est pas trouvé, on ajoute
FIN
FIN
Membre enregistré
357 messages
Posté le 28 juin 2021 - 08:42
Voroltinquo a écrit :
Bonjour,
TableauSupprimeDoublon est disponible depuis WD 16, mais en effet, ChaineSuppimeDooublon est inconnu au bataillon. Sans doute une fonction d'un composant.

--
Il y a peut être plus simple, mais, ça tourne

Je confirme qu'on ne voit pas cette fonction dans la doc mais qu'elle fonctionne sur mon poste.

--
Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements.
Membre enregistré
2 682 messages
Posté le 28 juin 2021 - 09:31
Je confirme qu'on ne voit pas cette fonction dans la doc mais qu'elle fonctionne sur mon poste.

Ben alors là j'avoue que c'est formidable. La fonction n'existe pas dans l'aide, elle n'est pas reconnue par la saisie assistée, mais si on la tape en toute lettre ben elle existe.

Une fonctionnalité non documentée !!! Ca me fait bien rire :)

--
Cordialement,

Philippe SAINT-BERTIN
Membre enregistré
3 748 messages
Posté le 28 juin 2021 - 12:37
Merci de réclamer la mise à jour de la documentation
Ainsi que la mise à jour de la saisie assistée.
Bernard, merci pour cette information
Merci de nous dire comment tu as fait pour connaître cette fonction
Posté le 28 juin 2021 - 17:07
Bonjour,

Je serais curieux de savoir à partir de quelle version "ChaîneSupprimeDoublon" est disponible, sur WD 15 non.
Je plussoie Popoy, Bernard comment avez-vous trouver cette fonction qui n'a pas d'existante référencée chez WD ??
Merci de votre réponse.

Ou si PC Soft voulait bien nous informer, se sais, je suis très optimiste ces derniers temps...

Alain
Membre enregistré
4 317 messages
Posté le 28 juin 2021 - 19:15
Pour revenir à la question, pourquoi supprimer les doublons ?
Il suffit de ne pas les ajouter lors du remplissage de la liste.
sMaListe est chaîne
sElement est chaîne

sMaliste=fChargeTexte(sCheminFichier)

POUR TOUTE chaîne sElement de sMaListe SEPAREE PAR RC
SI ListeCherche(LISTE_MesItems,sElement)=-1 ALORS
ListeAjoute(LISTE_MesItems,sElement)
FIN
FIN


--
Il y a peut être plus simple, mais, ça tourne
Posté le 29 juin 2021 - 07:51
Voroltinquo a écrit :
Pour revenir à la question, pourquoi supprimer les doublons ?
Il suffit de ne pas les ajouter lors du remplissage de la liste.
sMaListe est chaîne
sElement est chaîne

sMaliste=fChargeTexte(sCheminFichier)

POUR TOUTE chaîne sElement de sMaListe SEPAREE PAR RC
SI ListeCherche(LISTE_MesItems,sElement)=-1 ALORS
ListeAjoute(LISTE_MesItems,sElement)
FIN
FIN


--
Il y a peut être plus simple, mais, ça tourne


Bonjour,

C'est vrai, c'est ça qu'il faut faire.
Des fois, je me dis que je devrais faire une cure de vitamines C ou même de C++

Merci,
Alain
Membre enregistré
536 messages
Posté le 13 juillet 2021 - 09:33
Le problème c'est que les chaines peuvent aussi être importées, par ex d'un WBS, et donc il faut nettoyer.
Posté le 20 mai 2025 - 03:28
a écrit :
Bonjour,

Dans une liste remplie par un simple fichier externe constituée de lignes d'un seul mot et séparées par un RC
Item1
Item2
Item3
Item1
Item1

je souhaite supprimer les doublons en parcourant la liste, une idée, un bon de code SVP.

Alain


ChaîneSupprimeDoublon( LISTE_Items..Contenu ,RC, ccNormal) // (Windev version 27)