afficher les combinaisons de 3 chiffres

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

claude09

XLDnaute Occasionnel
Bonsoir.Dans une cellule ,j'ai les chiffres suivants:2 9 35 séparés par un espace.Je voudrais afficher les combinaisons relatives à ces 3 chiffres.Merci.
 
Re : afficher les combinaisons de 3 chiffres

Bonsoir claude09,

Avec 3 nombres donnés, ça se fait en 1 minute manuellement.

Mais je comprends que vous voulez automatiser ça pour 3 nombres quelconques.

Pour éviter tout malentendu, il est préférable que vous nous mettiez sur un fichier ce que vous voulez obtenir .

En effet en termes mathématiques il y a combinaisons et arrangements... Et puis la présentation des résultats...

A+
 
Re : afficher les combinaisons de 3 chiffres

Re,

Il s'agit donc de rechercher les arrangements en colonnes H:J.

Avec une fonction macro :

Code:
Function AR$(txt$) 'recherche les arrangements dans le tableau H:J
Dim x$, y$, z$, c1$, c2$, c3$, c4$, c5$, c6$, cel As Range
txt = Application.Trim(txt) 'sécurité
x = Split(txt, " ")(0)
y = Split(txt, " ")(1)
z = Split(txt, " ")(2)
c1 = txt
c2 = x & " " & z & " " & y
c3 = y & " " & x & " " & z
c4 = y & " " & z & " " & x
c5 = z & " " & x & " " & y
c6 = z & " " & y & " " & x
For Each cel In Range("G2", Range("G65536").End(xlUp)).Offset(, 1).Resize(, 3)
txt = Application.Trim(cel)
If txt = c1 Or txt = c2 Or txt = c3 Or txt = c4 Or txt = c5 Or txt = c6 Then _
  AR = AR & cel.Address & "-"
Next
AR = Replace(AR, "$", "")
End Function

Fichier joint.

Edit : mais vous avez raison, des arrangements de 3 nombres pris 3 par 3, ça s'appelle ausi des permutations 🙂

A+
 

Pièces jointes

Dernière édition:
Re : afficher les combinaisons de 3 chiffres

Re,

Il suffit de modifier Resize pour travailler sur les 5 colonnes H:L :

Code:
For Each cel In Range("G2", Range("G65536").End(xlUp)).Offset(, 1).Resize(, [COLOR="Red"][SIZE="3"]5[/SIZE][/COLOR])

A+
 
Re : afficher les combinaisons de 3 chiffres

Effectivement,c'est simple quand on connait !!!Une autre question:dans le code In Range("G2, etc....),la macro édite les permutations de la colonne G et affiche celles qui sont communes aux colonnes H I J .Maintenant,en partant de la colonne H ,je voudrais afficher les permutations communes aux colonnes G I J,puis de I,dans les colonnes G H J et de J dans les colonnes G H I !!! J ai comme l'impression qu'il va y avoir des doublons que l'on pourra supprimer.Merci.
 
Re : afficher les combinaisons de 3 chiffres

Re,

D'après ce que j'ai compris, j'ai généralisé la fonction pour qu'elle recherche les permutations d'une cellule quelconque dans une plage quelconque.

La colonne de la cellule est exclue de la recherche :

Code:
 Function PER$(cellule As Range, plage As Range) 'recherche les permutations dans plage, colonne de cellule exclue
Dim txt$, x$, y$, z$, c1$, c2$, c3$, c4$, c5$, c6$, cel As Range
Set plage = Intersect(plage, Range("2:" & Cells(65536, cellule.Column).End(xlUp).Row))
txt = Application.Trim(cellule) 'sécurité
x = Split(txt, " ")(0)
y = Split(txt, " ")(1)
z = Split(txt, " ")(2)
c1 = txt
c2 = x & " " & z & " " & y
c3 = y & " " & x & " " & z
c4 = y & " " & z & " " & x
c5 = z & " " & x & " " & y
c6 = z & " " & y & " " & x
For Each cel In plage
  If cel.Column <> cellule.Column Then
    txt = Application.Trim(cel)
    If txt = c1 Or txt = c2 Or txt = c3 Or txt = c4 Or txt = c5 Or txt = c6 Then _
      PER = PER & cel.Address & "-"
  End If
Next
PER = Replace(PER, "$", "")
End Function

Pour ce qui est des doublons et de leur suppression, merci d'expliquer plus clairement.

A+
 

Pièces jointes

Dernière édition:
Re : afficher les combinaisons de 3 chiffres

Re,

Je dois avec ce nouveau code pouvoir ajouter de nouvelles colonnes ?

Dans la feuille, la fonction s'écrit =PER(cellule;plage)

Vous pouvez mettre n'importe quelle plage comme argument.

Par ailleurs, si ça vous intéresse, voici une macro qui colore les cellules qui font doublons sur des combinaisons identiques de 3 nombres :

Code:
Sub DoublonCombinaison() 'colore les combinaisons en doublon
Dim plage As Range, d As Object, cel As Range, txt$, t
Set plage = Range("G2", Range("G65536").End(xlUp)).Resize(, 4) 'plage G:J
plage.Interior.ColorIndex = xlNone
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
For Each cel In plage
  txt = Application.Trim(cel) 'sécurité
  t = Array(CInt(Split(txt, " ")(0)), CInt(Split(txt, " ")(1)), CInt(Split(txt, " ")(2)))
  txt = Application.Min(t) & " " & Application.Small(t, 2) & " " & Application.Max(t)
  If d.Exists(txt) Then cel.Interior.ColorIndex = 38 Else d.Add txt, txt
Next
End Sub

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
343
Réponses
14
Affichages
485
Retour