Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nombre de combinaison possible

2 réponses
Avatar
beyazli37
Bonjour, qqu'un peut-il m'aider SVP, j'ai une formule sur exel pour
faire un certain nombre de combinaison avec un certain nombre de
chiffre choisis, mais mon probl=E8me c'est que le r=E9sultat de ma
recherche me donne un nombre de combinaison de plus de 3 million de
possibilit=E9 et ce qui fait que dans excel il n'affiche pas le
r=E9sultat du fait que dans excel nous avons que 65 536 lignes possible.
Et ma question cerais que, qqu'un peut-il m'aider, affin que je puisse
utiliser un autre logiciel que excel ou encore am=E9lior=E9 la formule.

Voisi la formule:

Dim Prd As Integer, Niv As Integer
Dim Lg As Integer, NbCols As Integer
Dim NbLignes As Long
Dim Arr(), Cbt, MaxCbt
Dim Max As Long, NbCbt As Long


Sub Test()


Dim Plage, Dest, P As Range
Dim Prof, Combins, I As Long


With Application
Set Plage =3D .InputBox("Plage de recherche", Type:=3D8)
If VarType(Plage) =3D vbBoolean Then Exit Sub
Prof =3D .InputBox("Nombre d'=E9l=E9ments", Type:=3D1)
If VarType(Prof) =3D vbBoolean Then Exit Sub
Set Dest =3D .InputBox("Destination", Type:=3D8)
If VarType(Dest) =3D vbBoolean Then Exit Sub
Combins =3D CBS(Range(Plage.Address(External:=3DTrue)), CInt(Prof))
.ScreenUpdating =3D False
End With


Dest.CurrentRegion.ClearContents
For Each P In Dest.Resize(UBound(Combins), Prof).Rows
I =3D I + 1
P =3D Combins(I)
Next P


End Sub


Function CBS(Plage As Range, Nombre As Integer)


Dim I As Long


NbLignes =3D Plage.Rows.Count
ReDim Arr(1 To NbLignes)
For I =3D 1 To NbLignes
Arr(I) =3D Plage.Rows(I)
Next I
Prd =3D Nombre
Lg =3D Plage.Columns.Count
Niv =3D 0: Max =3D 0: NbCbt =3D 0
ReDim Cbt(1 To Prd)
ReDim MaxCbt(1 To 1)
For I =3D 1 To UBound(Arr)
Recurse I, 1
Next I
Application.StatusBar =3D False
CBS =3D MaxCbt


End Function


Private Sub Recurse(L As Long, ByVal Cpt As Integer)


Dim I As Integer
Static Ligne As Long, C As Integer
Static Nb As Long, T As Long


On Error Resume Next
Niv =3D Niv + 1
For I =3D Cpt To Lg
Cbt(Niv) =3D Arr(L)(1, I)
If Niv =3D Prd Then
Nb =3D 1
For Ligne =3D L + 1 To NbLignes
For C =3D 1 To Prd
T =3D Application.Match(Cbt(C), Arr(Ligne), 0)
If Err Then Err.Clear: Exit For
Next C
If C > Prd Then Nb =3D Nb + 1
Next Ligne
If Nb >=3D Max Then
If Nb =3D Max Then
NbCbt =3D NbCbt + 1
ReDim Preserve MaxCbt(1 To NbCbt)
Else
NbCbt =3D 1
ReDim MaxCbt(1 To 1)
End If
MaxCbt(NbCbt) =3D Cbt
Application.StatusBar =3D NbCbt & " combinaison(s) =E0 " _
& Max & " occurences (" & Format$(L / NbLignes, "0.0%") & ")"

Max =3D Nb
End If
Else: Recurse L, I + 1
End If=20
Next I=20
Niv =3D Niv - 1=20


End Sub=20

Merci d'avance

2 réponses

Avatar
Starwing
Bonsoir beyazli37,

bla bla bla.... utiliser un autre logiciel que excel ou encore amélioré la
formule...
Regarde là:

http://cjoint.com/?lkdCe15uib

Starwing
Avatar
beyazli37

Bonsoir beyazli37,

bla bla bla.... utiliser un autre logiciel que excel ou encore amélior é la
formule...
Regarde là:

http://cjoint.com/?lkdCe15uib

Starwing


Starwing, je te remercie très sincèrement pour ton coup de pouce que
tu ma donner, ainssi que de la rapidité du message, merci bien, très
sincèrement :)