Gestion de listes (fusion, comparaison, tri...)

Soyez le premier à donner votre avis sur cette source.

Vue 10 064 fois - Téléchargée 1 003 fois

Description

Je manipule pour le boulot des fichiers. Par centaines, voire plus.
J'ai souvent des listes de fichiers, et j'ai besoin de faire des fusions de celles-ci.

de pourvoir extraire les différences entre telle et telle liste, etc.

allez, je sors ma plume en mode romancier :
- est-ce que tous les fichiers de cette liste ont été transférés ?
- attendez, je colle le contenu de la liste dans le premier onglet
- jusque là je vous suis, la manipulation est simple
- ensuite, je sélectionne tous les fichiers, je fais un glisser-deposer dans la deuxieme zone de texte
- oui, la liste 2
- enfin, je cliquer sur un bouton au nom évocateur: "Liste 1 - Liste 2"
- l'opération est dejà terminée ?
- oui, j'ai la liste des éléments restant a transferer dans l'onglet résultat
- il en reste donc a transferer... alors au travail, jeune homme !

bon, bon, je range ma plume, ok !!!!

d'autres exemples ?
Liste1:
pomme
poire
banane
fraise

Liste2:
kiwi
fraise
ananas
pomme

traitement Union: (cumul des deux listes)
pomme
poire
banane
fraise
kiwi
fraise
ananas
pomme

tri de la liste resultat:
ananas
banane
fraise
fraise
kiwi
poire
pomme
pomme

suppression des doublons (pas besoin de trier pour effectuer cette operation):
ananas
banane
fraise
kiwi
poire
pomme

si je demande maintenant...

Intersection:
fraise
pomme

Liste 1 - Liste 2:
poire
banane

Liste 2 - Liste 1:
kiwi
ananas

vous le voyez, rien de bien sorcier, mais un outil utile, je l'espère.

(Pour votre santé, évitez de grignoter. Mangez au moins cinq fruits et légumes frais !)

Conclusion :


Une mini source, faites rapidement ce matin.

Des algorithmes pas plus travaillés que ça (ils tournent, point barre)
Une interface moche, des temps de réponse discutables...

bref, pas une révolution en soit ^^

mais cette source est utile (à moi en tout cas) au boulot...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
mea culpa, tu as raison pour le +1
au petit reveil, je suis excusable ^^

sorry si j'ai pu paraitre mal luné.

concernant l'optimisation, ca ne viendra probablement pas, dans cette source, j'ai fait ca vite fait, pour gagner du temps au boulot... vu le temps gagné, ca se compte pas en secondes ^^

et ca me laisse du temps pour autr chose que le boulot :P
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
euh..trié ?! pas forcément
Si je compares M avec F, pourquoi recomparer F avec M ?

Et puis comme tu dis: ça marche ça marche ..Et combien même on
aura à traiter une liste de 90 000 items, quelques secondes de plus
ou de moins, ne changera pas grand chose au cours de l' histoire.

Renfield, je te sens irrascible ce matin.
Alors qoui ? t' as pas encore fini tes cinq fruits ? ;)

Sur ce, je me barre :-)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
dans un monde ou les items seraient triés peut-être bien ^^
(For k = i+1 To UBound(xsItems))

pour les cas particuliers (0, 1, ou deux elements...) j'ai pas traité. je l'ai dit: les algos fonctionnent, point barre.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,
Pas encre tester l' ensemble.
Il n' y a pas de doute que ça fonctionne.

J'ai parcouru le code, et j' avoue que je m' y perd un peu.
Mais pour la suppression, il me semble que ça devrait ressembler à ceci:

Private Sub CcBtnRemoveDuplicates_Click(Index As Integer)

'tester si la liste comporte au moins deux éléments .
If CcTxtList.Count=1 Then Exit Sub

'Voir même tester sur CcTxtList.Count=2
'et comparer le premier avec le deuxième.

Dim xsItems() As String
Dim i As Long
Dim k As Long
BeginJob
xsItems = Split(CcTxtList(Index).Text, vbCrLf)
For i = 0 To UBound(xsItems)-2
If LenB(xsItems(i)) Then
For k = i+1 To UBound(xsItems)
If LenB(xsItems(k)) Then
If xsItems(i) = xsItems(k) Then
xsItems(k) = vbNullString
End If
End If
Next k
End If
Next i
CcTxtList(Index).Text = Join(xsItems, vbCrLf)
EndJob
End Sub

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.