|
| Supprimer doublons dans un champ table |
| Débuté par Fany, 03 juin 2015 16:51 - 12 réponses |
| |
| | | |
|
| |
Membre enregistré 365 messages |
|
| Posté le 03 juin 2015 - 16:51 |
Bonjour à tous, Je bloque sur quelque chose qui ne semble pas compliqué.
J'ai un champ table dans lequel je viens entrer les des lignes. Parfois, certains enregistrements peuvent être identiques. Pour simplifier, actuellement j'ai ça :
[Ref] [Hauteur] [Longueur] A1 216 700 A1 216 700 A1 300 800 A2 300 450
Et je voudrais avoir : [Ref] [Hauteur] [Longueur] A1 216 700 A1 300 800 A2 300 450
Je remplis mon tableau depuis un fichier csv :
POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN FIN FIN
J'ai vraiment tout essayé, vraiment, j'ai perdu un temps fou à faire 3 milles essais jamais concluants.... c'est atroce moralement.
J'ai bien évidement essayé d'utiliser la fonction tablecherche(), mais le problème c'est que ma recherche s'arrête sur le premier élement trouvé du tableau, et ne vas pas vérifier les autres enregistrements (mon code ci dessous ne fonctionne pas complètement car je n'ai pas réussi à boucler ma comparaison sur tous les enregistrements de ma table). Je vous le mets quand même, si on peux partir de ça pour trouver une solution à mon problème :
POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
nDoublon est un entier = TableCherche(TABLE_Configuration.COL_RefModule,sRefModule)
SI nDoublon <> -1 ALORS SI TABLE_Configuration[nDoublon].COL_Hauteur = sHauteur ET TABLE_Configuration[nDoublon].COL_Longueur ALORS
SINON TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN
SINON TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN FIN FIN FIN
Alors il y a une autre solution, qui consiste à passer par une colonne cachée ou je ferai une sorte de clé composé avec Ref+Hauteur+Longueur et je ferai ma recherche sur cette colonne... mais pour que vous puissiez comprendre, j'ai énormément simplifié ma table, et je fais des recherches sur bcp d'autre colonnes (epaisseur, finition, couleur...) et je me vois mal faire une maxi clé composée...
Il doit bien y avoir une meilleur technique.
Je m'en remets dons encore une fois à vos conseils pour pouvoir avancer sur ce point qui me bloque.
D'avance merci !!!
Fany |
| |
| |
| | | |
|
| | |
| |
| Posté le 03 juin 2015 - 17:04 |
Le plus judicieux serait de tester les doublons lors de la récupération du .csv. Avant chaque ajout dans la table, chercher si l'élément existe dans la dite table avant de faire l'ajout, et le tour est joué. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 204 messages |
|
| Posté le 03 juin 2015 - 17:36 |
bonjour,
je m'y prendrais de la façon suivante :
je crée un tableau de chaine LeTabCompose est un tableau de chaines
je mets dedans une clé composée : cleCompo est une chaine
Je commence la lecture de mon fichier POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
cleCompo = sRefModule +sHauteur +sLongueur
je fais une recherche dans mon tableau pour voir si cet élément figure déjà Indice est un entier=-1 Si LeTabCompose..Occurrence > 0 Alors Indice = TableauCherche(LeTabCompose, tclineaire,cleCompo) Fin
Si Indice=-1 Alors // j'ajoute le nouvel élément au tableau // et dans ma table les 4 éléments
Ajoute(LeTabCompos,CleCompo) TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur)
//Sinon // je passe à l'enregistrement suivant Fin
//Et je boucle Fin Fin
J'espère que ça peut t'aider (j'ai rédigé à la volée, il y a sans doute de petites erreurs ci et là) cordlt Christophe |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 326 messages |
|
| Posté le 03 juin 2015 - 17:58 |
Bonsoir.
-> le truc classique : tu ajoutes toujours la première ligne : tu stockes ta clé -> pour les lignes suivantes tu compares à ta clé -> si pareil tu passes si différente tu ajoutes et tu re-stockes ta clé...
un bout de code ci-dessous (je ne sais pas pourquoi tu commence à la ligne 3 mais bon ....
Michel.
sRefModule est une chaîne sQuantite est une chaîne sHauteur est une chaîne sLongueur est une chaîne ma_cle_lue est une chaîne
POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++
SI i = 3 ma_cle_lue = ExtraitChaîne(sLigneFichier,1,";") + ExtraitChaîne(sLigneFichier,2,";") + ExtraitChaîne(sLigneFichier,5,";")+ ExtraitChaîne(sLigneFichier,5,";") sRefModule = ExtraitChaîne(sLigneFichier,1,";") sQuantite = ExtraitChaîne(sLigneFichier,2,";") sHauteur = ExtraitChaîne(sLigneFichier,5,";") sLongueur = ExtraitChaîne(sLigneFichier,6,";")
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) ma_cle_lue = ExtraitChaîne(sLigneFichier,1,";") + ExtraitChaîne(sLigneFichier,2,";") + ExtraitChaîne(sLigneFichier,5,";")+ ExtraitChaîne(sLigneFichier,5,";")
SINON SI ma_cle_lue <> ExtraitChaîne(sLigneFichier,1,";") + ExtraitChaîne(sLigneFichier,2,";") + ExtraitChaîne(sLigneFichier,5,";")+ ExtraitChaîne(sLigneFichier,5,";") ALORS
sRefModule = ExtraitChaîne(sLigneFichier,1,";") sQuantite = ExtraitChaîne(sLigneFichier,2,";") sHauteur = ExtraitChaîne(sLigneFichier,5,";") sLongueur = ExtraitChaîne(sLigneFichier,6,";")
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) ma_cle_lue = ExtraitChaîne(sLigneFichier,1,";") + ExtraitChaîne(sLigneFichier,2,";") + ExtraitChaîne(sLigneFichier,5,";")+ ExtraitChaîne(sLigneFichier,5,";")
FIN FIN FIN |
| |
| |
| | | |
|
| | |
| |
| Posté le 03 juin 2015 - 20:40 |
Bonjour Fany,
Si le CSV n'est pas gigantesque, voici comment je ferais 
Local nPos est un entier = 0 sDéjà est une chaine = ""
POUR TOUT CHAÎNE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
nPos = Position(sDéjà,"["+sLigneFichier+"]") si nPos = 0 alors TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) sDéjà += "["+sLigneFichier+"]" Fin
FIN FIN FIN
Bien à toi, Fabrice De Weerd www.fawax.com/dev
Le 03-06-15 14:51, Fany a écrit :
Bonjour à tous, Je bloque sur quelque chose qui ne semble pas compliqué. J'ai un champ table dans lequel je viens entrer les des lignes. Parfois, certains enregistrements peuvent être identiques. Pour simplifier, actuellement j'ai ça : [Ref] [Hauteur] [Longueur] A1 216 700 A1 216 700 A1 300 800 A2 300 450 Et je voudrais avoir : [Ref] [Hauteur] [Longueur] A1 216 700 A1 300 800 A2 300 450 Je remplis mon tableau depuis un fichier csv : POUR TOUT CHAÎNE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN FIN FIN J'ai vraiment tout essayé, vraiment, j'ai perdu un temps fou à faire 3 milles essais jamais concluants.... c'est atroce moralement. J'ai bien évidement essayé d'utiliser la fonction tablecherche(), mais le problème c'est que ma recherche s'arrête sur le premier élement trouvé du tableau, et ne vas pas vérifier les autres enregistrements (mon code ci dessous ne fonctionne pas complètement car je n'ai pas réussi à boucler ma comparaison sur tous les enregistrements de ma table). Je vous le mets quand même, si on peux partir de ça pour trouver une solution à mon problème : POUR TOUT CHAÎNE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
nDoublon est un entier = TableCherche(TABLE_Configuration.COL_RefModule,sRefModule) SI nDoublon <> -1 ALORS SI TABLE_Configuration[nDoublon].COL_Hauteur = sHauteur ET TABLE_Configuration[nDoublon].COL_Longueur ALORS SINON mais pas la même hauteur et largeur
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN SINON
TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur) FIN FIN FIN FIN Alors il y a une autre solution, qui consiste à passer par une colonne cachée ou je ferai une sorte de clé composé avec Ref+Hauteur+Longueur et je ferai ma recherche sur cette colonne... mais pour que vous puissiez comprendre, j'ai énormément simplifié ma table, et je fais des recherches sur bcp d'autre colonnes (epaisseur, finition, couleur...) et je me vois mal faire une maxi clé composée... Il doit bien y avoir une meilleur technique. Je m'en remets dons encore une fois à vos conseils pour pouvoir avancer sur ce point qui me bloque. D'avance merci !!! Fany |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 186 messages |
|
| Posté le 04 juin 2015 - 10:02 |
Salut, Tu a un soucis sur ton SI tout simplement. Tu testes ta colonne COL_Longueur mais tu ne la compare pas à la valeur stockée dans sLongueur... Ensuite tes données sont des chaines mais contiennent des valeurs numériques donc je ne sais pas comment est fait ton fichier CSV mais je blinderai un peu plus le test de ton SI. Par exemple si tu veux conserver des chaines compare :
SI SansEspace(TABLE_Configuration[nDoublon].COL_Hauteur) = SansEspace(sHauteur) ET SansEspace(TABLE_Configuration[nDoublon].COL_Longueur) = SansEspace(sLongueur) ALORS ...
Ou sinon puisque ce sont des hauteurs et des largeurs, donc des numériques transfrome sHauteur et sLongueur et les colonnes COL_Hauteur et COL_Longueur en entier (ou réel selon tes besoins) et compare les valeurs. Ce qui donnerait :
SI TABLE_Configuration[nDoublon].COL_Hauteur = Val(sHauteur) ET TABLE_Configuration[nDoublon].COL_Longueur = Val(sLongueur) ALORS ...
Bon courage
-- Seb |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 365 messages |
|
| Posté le 04 juin 2015 - 11:14 |
Bonjour à tous et merci pour vos réponses !
J'ai choisi d'utiliser la solution de Christophe que j'ai testé et qui fonctionne très bien. Un grand merci. Cependant, j'aurai une autre question... j'ai essayé d'adapter votre code pour résoudre le problème moi même mais je n'ai pas réussi. Ce que je n'ai pas précisé (je ne voulais pas compliquer ma demande, mais là je coince...) c'est que j'ai une autre colonne dans mon tableau qui concerne les quantités. Si je reprends mon exemple de tableau :
[Ref] [Hauteur] [Longueur] [Quantite] A1 216 700 5 A1 216 700 6 A1 300 800 1 A2 300 450 2
Je voudrais obtenir : [Ref] [Hauteur] [Longueur] [Quantite] A1 216 700 11 <-- addition de 5 + 6 A1 300 800 1 A2 300 450 2
(je voudrais pouvoir additionner mes quantités)
Donc au lieu de passer par un tableau à une dimension, j'ai essayé de passer par un tableau à deux dimensions, pour rajouter à chaque ligne de mon "tableau de tableau d'entiers" le numéro de la ligne de mon champ table correspondant à la clé composée recherchée (sRefModule+sHauteur+sLongueur), pour retrouver la quantité et lui ajouter la nouvelle quantite Comme ça je n'aurai plus à modifier la quantité de la ligne correspondante à ma clé composé.
Mais.... ça ne marche pas ^^ je vous mets ci dessous le code :
nPos est un entier = 0 sDéjà est une chaîne = ""
LeTabCompose est un tableau de tableau de chaînes nIndiceTab est un entier cleCompo est une chaîne
POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC i++ SI i > 2 ALORS SI sLigneFichier <> "" ALORS sRefModule est une chaîne = ExtraitChaîne(sLigneFichier,1,";") sQuantite est une chaîne = ExtraitChaîne(sLigneFichier,2,";") sCouleur est une chaîne = ExtraitChaîne(sLigneFichier,3,";") sFinition est une chaîne = ExtraitChaîne(sLigneFichier,4,";") sHauteur est une chaîne = ExtraitChaîne(sLigneFichier,5,";") sLongueur est une chaîne = ExtraitChaîne(sLigneFichier,6,";")
cleCompo = sRefModule +sHauteur +sLongueur +sCouleur +sFinition
Indice est un entier=-1 SI LeTabCompose..Occurrence > 0 ALORS Indice = TableauCherche(LeTabCompose[1], tcLinéaire,cleCompo)
FIN
SI Indice=-1 ALORS
nLigne est un entier = TableAjouteLigne(TABLE_Configuration) TABLE_Configuration[nLigne].COL_RefModule = sRefModule TABLE_Configuration[nLigne].COL_Quantite = sQuantite TABLE_Configuration[nLigne].COL_Couleur = sCouleur TABLE_Configuration[nLigne].COL_Finition = sFinition TABLE_Configuration[nLigne].COL_Hauteur = sHauteur TABLE_Configuration[nLigne].COL_Longueur = sLongueur
nIndiceTab = Ajoute(LeTabCompose) Ajoute(LeTabCompose[nIndiceTab],cleCompo) Ajoute(LeTabCompose[nIndiceTab],nLigne)
FIN
FIN FIN FIN
Comment je peux faire pour créer deux colonnes dans mon tableau à deux dimensions ? Le but étant :
A chaque nouvel ajout d'élément dans mon tableau (car pas encore de doublon) : J'ajoute une ligne dans ma table : nLigne = tableajouteligne(table_configuration)
Puis j'ajoute une ligne dans mon tableau : [1][1] --> Clé composé = sRefModule+sHauteur+sLongueur [1][2] --> NumLigneTable = nLigne
COMME ça : A chaque fois qu'on trouve un doublon dans mon tableau d'entiers --> alors je récupère le numéro de ma ligne correspondant à ma clé recherchée dans table_configuration
et je fais : table_configuration[INDICE_LIGNE_CHAMP_TABLE].col_quantite = val(table_configuration[INDICE_LIGNE_CHAMP_TABLE].col_quantite) + squantite
Mais je n'arrive même pas à affecter le numéro de la ligne dans mon element 2 de mon tableau, ça semble ne pas marcher :
nIndiceTab = Ajoute(LeTabCompose) Ajoute(LeTabCompose[nIndiceTab],cleCompo) Ajoute(LeTabCompose[nIndiceTab],nLigne)
merci d'avance...
Fany |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 101 messages |
|
| Posté le 04 juin 2015 - 12:09 |
Bonjour, Tu compliques beaucoup les choses. Et donc tu obtiens un truc difficile à programmer là où c'était simple.
Pour moi, le plus simple, et peut-être le plus performant, c'est de faire 3 étapes bien indépendantes : 1. lire le fichier CSV, et pour chaque ligne lue, insérer une ligne dans la table. 2. Trier le champ table sur les colonnes Ref , Hauteur, Longueur 3. Parcourir le champ table de la dernière ligne à la première (l'ordre est important), comparer la ligne lue à la suivante, et si ces 2 lignes concernent la même référence, faire les traitements voulus ( recalcul de la quantité, et suppression de la ligne en double).
L'autre option, c'est de faire comme tu as commencé, lire le fichier CSV, et pour chaque ligne lue, regarder si cette ligne doit être ajoutée, ou si on doit modifier une ligne existante. Mais dans ce cas, il ne faut SURTOUT pas utiliser un tableau qui est la copie plus ou moins exacte du champ table. Soit tu mets une colonne invisible dans ton champ table, avec dans cette colonne la concaténation de REF+Hauteur+Longueur. Soit tu crées une fonction tablecherche1() qui ressemblerait à ça :
Procedure tablecherche1(ref0, hau0, long0) i est un entier i = TableCherche(matable, ref0) TANTQUE i > 0 SI matable.haut[i]= haut0 _et_ matable.long[i] = long0 ALORS RENVOYER i po = TableCherche(matable, ref0, i+1) FIN RENVOYER -1 Tu utilises cette fonction au lieu de tablecherche() , et ça te permet de faire une recherche multi-critères.
Et du coup ton code devient tout simple.
Pour TOUTE CHAINE sligne de xxx séparee PAR RC i = tablecherche1(ref0, haut0, long0) SI i = -1 ALORS SINON FIN FIN
Dernier point : Il me semble ( à confirmer donc) que de manière générale, on conseille de déclarer les variables au début de la procédure ... puis de les utiliser. Du coup, quand je vois des variables qui sont déclarées à l'intérieur d'une boucle, ça me fait mal. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 204 messages |
|
| Posté le 04 juin 2015 - 12:35 |
Bonjour,
Je te suggère de modifier le code précédemment suggéré :
... //Sinon // je passe à l'enregistrement suivant Fin ...
en :
Sinon // s'il y a doublon, j'ajoute les quantités directement dans la table : // l'indice trouvé par la recherche correspondant à celui de la table Table_Configuration[nIndice].col_quantite = Val(Table_Configuration[INDICE_NUM_LIGNE_CHAMP_TABLE].col_quantite) +sQuantite // je passe à l'enregistrement suivant Fin
Sauf erreur de ma part Il me semble qu'il vaut mieux déclarer les variables en dehors des boucles (et il y a un nIndice et un Indice dans ton code). bon courage Christophe |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 186 messages |
|
| Posté le 04 juin 2015 - 14:44 |
Pourquoi faire simple quand on peut faire compliqué... Si on te laisse faire des trucs quand tu reliras ton code dans un an tu te diras que des gros mots 
MonFicest une chaîne = "D:\Classeur1.csv" ChargementFichierCSVest une chaîne
ChargementFichierCSV=fChargeTexte(MonFic)
sRefModuleest une chaîne sQuantiteest une entier sHauteurest un entier sLongueurest un entier indLigneest un entier Ajoutest un booléen
POUR TOUT CHAINE sLigneFichier DE ChargementFichierCSV SEPAREE PAR RC SI SansEspace(sLigneFichier) <> "" ALORS sRefModule=ExtraitChaîne(sLigneFichier,1,";") sQuantite=ExtraitChaîne(sLigneFichier,4,";") sHauteur=ExtraitChaîne(sLigneFichier,2,";") sLongueur=ExtraitChaîne(sLigneFichier,3,";") Ajout=Vrai
indLigne=TableCherche(COL_Entete,sRefModule, Vrai) TANTQUE indLigne <> -1
SI TABLE_Configuration[indLigne].COL_Hauteur = sHauteur _ET_ TABLE_Configuration[indLigne].COL_Largeur = sLongueur ALORS
Ajout=Faux TABLE_Configuration[indLigne].COL_Quantite+=sQuantite FIN
indLigne=TableCherche(COL_Entete,sRefModule, Vrai, indLigne +1) FIN
SI Ajout ALORS TableAjouteLigne(TABLE_Configuration,sRefModule,sHauteur, sLongueur, sQuantite) FIN FIN FIN
Ecrit en 5 minutes. Après si ton fichier est volumineux il vaut mieux effectivement utiliser une colonne cachée qui contient la concaténation RefModule + Hauteur + Longueur pour effectuer les recherche ton code sera plus optimisé.
Bon courage
-- Seb |
| |
| |
| | | |
|
| | |
| |
| Posté le 04 juin 2015 - 15:56 |
Bonjour,
Tu peux faire encore plus simple et plus lisible.
MonFic est une chaîne = "D:\Classeur1.csv" ChargementFichierCSV est une chaîne
ChargementFichierCSV=fChargeTexte(MonFic)
STUneCategorie est une structure
Ref est une chaîne Hauteur est un entier Largeur est un entier
FIN
tabLesCategories est un tableau de STUneCategorie
ChaîneVersTableau(ChargementFichierCSV , tabLesCategories, RC ,";")
TableauSupprimeDoublon(tabLesCategories, ttMembre, "Ref;Hauteur;Largeur")
sValRef est une chaîne nValHauteur est un entier nValLargeur est un entier
SI TableauCherche(tabLesCategories,tcLinéaire,"Ref;Hauteur;Largeur",sValRef,nValHauteur,nValLargeur)=-1 ALORS
FIN
Bon courage Guillaume |
| |
| |
| | | |
|
| | |
| |
| Posté le 05 juin 2015 - 22:36 |
Voici ce que j'ai fais pour supprimer les doublons de ma combo
SI ListeOccurrence(COMBO_Annee)>1 ALORS POUR k =2 _A_ ListeOccurrence(COMBO_Annee) SI COMBO_Annee[k]=COMBO_Annee[k-1] ALORS ListeSupprime(COMBO_Annee,k) FIN FIN FIN |
| |
| |
| | | |
|
| | |
| |
| Posté le 05 juin 2015 - 23:30 |
auparavant évidemment tu aura trié la table selon la colonne contenant les doublons :
voici le résultat sur un table
TableTrie(TABLE,"table.COL_LibSerie") //supprime doublons SI TableOccurrence(TABLE)>1 ALORS POUR k = TableOccurrence(TABLE) _A_ 2 PAS -1 SI TABLE.COL_LibSerie[k]=TABLE.COL_LibSerie[k-1] ALORS TableSupprime(TABLE,k) FIN FIN FIN |
| |
| |
| | | |
|
| | | | |
| | |
|