Tri à réaliser sur base de combinaisons de caractères

Bonjour,

Je suis nouvelle sur ce Forum et j’utilise Excel 2007 en Français.

Mes compétences sont celles d’une utilisatrice standard et certainement pas celles d’une programmeuse; c’est probablement ce qui me donne conscience maintenant de mes propres limites.

Merci d’avance pour le temps que vous prendrez afin de m’aider !

Je suis complètement bloquée par des tris à réaliser de préférence sous le programme Excel

Le problème de tri se situe au niveau de références précises à rechercher.

Ces références sont reprises dans une simple colonne Excel et sont constituées de champs alphanumériques pouvant aller jusque 16 caractères. (parfois moins).

Est-il possible en Excel de réaliser une recherche (ou un tri) reprenant une combinaison de caractères donnés (avec X caractères dans n’importe quel ordre) ?

Tout ceci semble bien compliqué à expliquer ; permettez-moi de vous donner un exemple tout à fait similaire qui devrait éclairer votre lanterne.

Imaginez que ma liste de références (base de données) soit un dictionnaire de la langue française et que vous vouliez jouer au SCRABBLE (ou aux jeux des chiffres et des lettres).

Dans cette optique vous tirez un certain nombre de lettres et vous voulez retrouver tous les mots composés par ces lettres dans le dictionnaire

Exemple simplifié avec 4 caractères :

Vous tirez au hasard les 4 lettres: e,c,v,a

Le résultat de la recherche souhaité donnerait dans le dictionnaire (base de donnée de notre exemple) :

-avec (4 caractères),

-cave (4 caractères),

-ace (3 caractères),

-ave (3 caractères),

-ce (2 caractères),

-…,

Certains petits programmes de jeux de mots existent et réalisent cela parfaitement, bien évidemment mon gros souci est que la base de données que je veux utiliser n’est pas le dictionnaire et que ce sont des applications fermées où rien n’est modifiable.

Tout d’abord, est ce possible à réaliser sous Excel (via une macro par ex.) et dans l’affirmative de quelle manière ?

D’autres solutions sont elles envisageables ?

Je vous remercie déjà de m’avoir lue et vous serez éternellement reconnaissante de vouloir m’aider !

Cordialement,

Bonjour et bienvenue sur le forum

Je ne sais pas si c'est possible ni si j'en suis capable.

Mais j'aimerais bien essayer.

Peux-tu envoyer un exemple plus concret en donnant la liste de dont tu disposes au départ et ce que tu veux obtenir ?

A te relire.

Bonjour gmb,

Tout d'abord un énorme merci pour ta rapidité et surtout pour ta bonne volonté.

Je ne dispose pas de fichier pour l'instant puisque je suis en congé; c'est pourquoi, je vais en créer un pour les tests avec une dizaines de références "bidon" en te mettant ce que je devrais obtenir.

Comment puis-je te faire parvenir le fichier "TEST"?

Encore merci pour ton aide!

Cordialement,

Tu écris :

Comment puis-je te faire parvenir le fichier "TEST"?

Réponse : en le joignant à ton prochain message :

capture

Bonjour,

Et tu ne veux que ceux qui contiennent uniquement ces lettres et aucune autre ?

Tu ne veux pas que, dans ton exemple, il sorte caves, ces, etc ?

Et il s'agit plus d'un filtre que d'un tri non ?

eric

Re,

Merci également à gmb et eriiic

Voici un autre exemple en alphanumérique avec 15 échantillons.

Voici la combinaison recherchée : 1bdzf

Exemple :

Références (à trier)

aezr2dhxc69pvjqt

bd1zf

ncvre5tro

f983qxmyre

zbf21

kdepqx56ryus

2pokjdszanvxw136

ncb8msjf6et7i

f1db

fz

bd1zfgjrt54

12365987pac

mlkjhgfdsqpoiuyt

c3f2rzsx8

f1

On cherche à filtrer, en effet eriiic , les références ayant au moins un, plusieurs, voire tous les caractères repris dans la combinaison recherchée ; à l’exclusion de tout autre caractère :

Résultat du tri (désiré)

bd1zf

zbf21

f1db

fz

f1

J’espère ne pas avoir fait d’erreur…

Vous comprenez mieux pourquoi j’ai pris l’exemple du scrabble et du dictionnaire qui pour moi est nettement plus parlant…

Encore merci pour votre aide !


12tritest.xlsx (8.58 Ko)

Voici un l'exemple sous forme de fichier...

Bonjour,

zbf21 ne me semble pas répondre à la règle à l’exclusion de tout autre caractère

??

A+

Bonjour Galopin01,

Tu as 100% raison, je me suis trompée...

Voilà pourquoi je cherche à automatiser le filtrage via Excel...

Bonjour

Je suis le sujet d'un œil distrait mais

Martine44 a écrit :

j’ai pris l’exemple du scrabble et du dictionnaire

Rappelles moi de ne jamais jouer contre toi au scrabble (avec des mots comme-ça tu vas toujours gagner)
Dictionnaire vulcain 1er degré (j'irai pas loin avec le mien)?

Et tout ça avec le sourire

Si tu trouves la solution, je te promets de te laisser gagner toutes les parties de Scrabble jusqu'à la fin des temps!

bonjour,

Une solution à minima :

la plage à filtre doit se trouver dans la colonne A (de A1 à A...

Le critère dans la cellule K1

La macro efface les cellules qui ne répondent pas à critère.

Sub galopin()
Dim Rg As Range, T As Variant, s$, k%
s = Range("K1")
Set Rg = Range("A1:A" & [A65000].End(3).Row)
T = Rg.Value
ReDim Temp(1 To UBound(T, 1))
   For a = 1 To UBound(T, 1)
      If Len(T(a, 1)) > Len(s) Then
         Cells(a, 1) = ""
      Else
       For k = 1 To Len(s)
       If InStr(1, s, Mid(T(a, 1), k, 1)) = 0 Then Cells(a, 1) = ""
       Next
      End If
   Next
End Sub

NOTA : il n'est pas tenu compte des doublons dans la colonne A

(par exemple "dd1" est gardé ou "fbdf" seraient gardés car il ne comportent que des caractères valides

A+

Bonsoir à tous,

Une bidouille en pièce jointe

Cdlt

Renyeu

8tritest-2.xlsx (8.52 Ko)

Bonsoir,

Cette autre macro élimine les doublons de lettre dans la colonne A

Nota : dans les 2 macros, il n'est pas tenu compte des doublons de lettres éventuels dans "critère" (K1)

Sub galopin()
Dim Rg As Range, T As Variant, o As Range, s$, k%
s = Range("K1")
Set Rg = Range("A1:A" & [A65000].End(3).Row)
T = Rg.Value
ReDim Temp(1 To UBound(T, 1))
   For a = 1 To UBound(T, 1)
      If Len(T(a, 1)) > Len(s) Then
         Cells(a, 1) = ""
      Else
       For k = 1 To Len(s)
       If InStr(1, s, Mid(T(a, 1), k, 1)) = 0 Then Cells(a, 1) = ""
       Next
      End If
   Next

   For Each o In Rg
      s = o.Value
      If Len(s) > 0 Then
          For k = 1 To Len(s) - 1
            If InStr(k + 1, s, Mid(s, k, 1)) > 0 Then o = ""
          Next
      End If
   Next
End Sub

A+

7martine44.xlsm (17.36 Ko)

Un essai.

Mais je ne suis pas sûr d'avoir bien compris ! Surtout en comparant avec le résultat souhaité...

8tritest-v1.xlsm (25.06 Ko)

Allez, un de plus

Sous forme de filtre.

eric

11tritest.xlsm (17.88 Ko)

Merci à tous pour vos réponses!

Je testerai ça demain et je reviens vers vous.

A+

P.S. Je suis super contente de votre aide.

Rechercher des sujets similaires à "tri realiser base combinaisons caracteres"