Comment éliminer des combinaisons qui ne sont pas dans le même ordre

Bonjour

N'ayant pas de notion de programmation dans Excel, j'espère que quelqu'un pourra m'aider sur ce problème

Voici le problème : je sais supprimer les doublons dans le contenu des cellules sélectionnées, il y a une fonction qui fait très bien cela dans Excel. Mais en ce qui me concerne elle ne me convient pas car le contenu des cellules doit être identique.

Je voudrais les doublons de cellules qui contiennent les mêmes chiffres mais pas dans le même ordre.

Je m’explique, voici par exemple, un ensemble de cellules contenant cela :

5-1-2-3

5-1-3-2

5-1-2-4

5-1-4-2

5-1-3-4

5-1-4-3

5-2-1-3

5-2-3-1

5-2-1-4

5-2-4-1

5-2-3-4

5-2-4-3

Il y à des cellules qui contiennent les mêmes chiffres mais pas dans le même ordre et j'aimerai supprimer les doublons de cellules contenant les mêmes chiffres même s'ils sont dans un ordre différent.

Exemple :

5-1-2-3

5-1-3-2

5-2-1-3

5-2-3-1

Ces cellules contiennent les mêmes chiffres, il me faut donc qu'il ne m'en reste qu'une.

Je pense que c'est possible de faire cela sur Excel mais je ne sais pas comment faire car la fonction d'élimination des doublons d’Excel élimine le contenu que s'il est exactement identique

Merci d'avance pour votre aide

Cordialement

Bonjour

Mettre sous forme de tableau structuré

Ajouter une colonne avec la formule

=PETITE.VALEUR(1*STXT(SUBSTITUE([@Combinaisons];"-";"");LIGNE(INDIRECT(1&":"&NBCAR(SUBSTITUE([@Combinaisons];"-";""))));1);1)&PETITE.VALEUR(1*STXT(SUBSTITUE([@Combinaisons];"-";"");LIGNE(INDIRECT(1&":"&NBCAR(SUBSTITUE([@Combinaisons];"-";""))));1);2)&PETITE.VALEUR(1*STXT(SUBSTITUE([@Combinaisons];"-";"");LIGNE(INDIRECT(1&":"&NBCAR(SUBSTITUE([@Combinaisons];"-";""))));1);3)&PETITE.VALEUR(1*STXT(SUBSTITUE([@Combinaisons];"-";"");LIGNE(INDIRECT(1&":"&NBCAR(SUBSTITUE([@Combinaisons];"-";""))));1);4)
image

Puis supprimer les doublons par rapport à cette seconde colonne...

Bonjour

Merci beaucoup pour cette réponse rapide.

Je vais essayer ça

Merci

bonjour,

s'il y a beaucoup de combinaisons a verifier, on peut utiliser un macro. Il y a combien de combinaisons ?

Désolé , je suis vraiment nul sur Excel, je ne sais pas comment intégrer la solution que vous m'avez donné .

Pourriez-vous me les intégrer dans le fichier joint ?

Les combinaisons sont en 3 numéros (colonne A) , 4 numéros (colonne C) , 5 numéros (Colonne E) donc il faut faire un tableau structuré avec ces colonnes et ajouter des colonnes en B, D et F avec votre formule pour ensuite supprimer les doublons mais je n'ai pas réussi à le faire.

Merci d'avance

12combinaisons.xlsx (22.07 Ko)

Pour répondre à votre question , oui il y à beaucoup de combinaison en fait toutes celles qui sont dans le fichier joint mais cela peut évoluer en nombre donc il faut comme vous dites plutôt une macro.

Comme vous pouvez le voir dans le fichier , les colonnes peuvent être en 3 numéros, 4 numéros et 5 numéros et il faut supprimer les doublons pour toutes les colonnes.

Si vous savez faire ça , je suis preneur.

RE

Comme souvent, hélas l'énoncé et la réalité diffèrent...

Une solution PowerQuery

bonjour

une contribution/ essai pour Comb1 uniquement

cordialement

9topprofit.xlsx (34.23 Ko)

Merci beaucoup

bonjour,

colonnes M:P = avec formules matricielles

Colonne S:U = avec macro "Teste" & sorter dans la cellule + la colonne

Function CombUniq(c, b)
     Set dict = CreateObject("scripting.dictionary")
     Set sca = CreateObject("system.collections.arraylist")
     a = c.Value
     For i = 1 To UBound(a)
          sp = Split(a(i, 1), "-")     'divicez en pieces
          sca.Clear     'RemoveAll
          For j = 0 To UBound(sp)
               sca.Add CStr(sp(j))     ' ajouter au arraylist
          Next
          sca.Sort     'sorter
          dict(Join(sca.toarray, "-")) = a(i, 1)     'ajouter l'array sorté comme key et l'origine comme item
     Next
     CombUniq = IIf(b, Application.Transpose(dict.keys), Application.Transpose(dict.items))
End Function

Sub Test()
     For i = 1 To 3     '3 plages à manipuler
          arr = CombUniq(Sheets("feuil1").Cells(1, i * 2 - 1).ListObject.DataBodyRange, 1)     'plage + 1 (=sorter la cellule) vers le UDF
          With Range("r2").Offset(, i)
               .Resize(1000).ClearContents     'effacer une plage grande assez
               With .Resize(UBound(arr))     'la plage à écrire
                    .NumberFormat = "@"     'format = texte
                    .Value = arr     'écrire
                    .Sort .Range("A1"), Header:=xlNo     'sorter
               End With
          End With
     Next
End Sub
Rechercher des sujets similaires à "comment eliminer combinaisons qui pas meme ordre"