GNT sans publicité, site mobile, fonctionnalitées exclusives...

Nombre de combinaison possible

Le
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ème c'est que le résultat de ma
recherche me donne un nombre de combinaison de plus de 3 million de
possibilité et ce qui fait que dans excel il n'affiche pas le
résultat 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élioré 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 = .InputBox("Plage de recherche", Type:=8)
If VarType(Plage) = vbBoolean Then Exit Sub
Prof = .InputBox("Nombre d'éléments", Type:=1)
If VarType(Prof) = vbBoolean Then Exit Sub
Set Dest = .InputBox("Destination", Type:=8)
If VarType(Dest) = vbBoolean Then Exit Sub
Combins = CBS(Range(Plage.Address(External:=True)), CInt(Prof))
.ScreenUpdating = False
End With


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


End Sub


Function CBS(Plage As Range, Nombre As Integer)


Dim I As Long


NbLignes = Plage.Rows.Count
ReDim Arr(1 To NbLignes)
For I = 1 To NbLignes
Arr(I) = Plage.Rows(I)
Next I
Prd = Nombre
Lg = Plage.Columns.Count
Niv = 0: Max = 0: NbCbt = 0
ReDim Cbt(1 To Prd)
ReDim MaxCbt(1 To 1)
For I = 1 To UBound(Arr)
Recurse I, 1
Next I
Application.StatusBar = False
CBS = 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 = Niv + 1
For I = Cpt To Lg
Cbt(Niv) = Arr(L)(1, I)
If Niv = Prd Then
Nb = 1
For Ligne = L + 1 To NbLignes
For C = 1 To Prd
T = Application.Match(Cbt(C), Arr(Ligne), 0)
If Err Then Err.Clear: Exit For
Next C
If C > Prd Then Nb = Nb + 1
Next Ligne
If Nb >= Max Then
If Nb = Max Then
NbCbt = NbCbt + 1
ReDim Preserve MaxCbt(1 To NbCbt)
Else
NbCbt = 1
ReDim MaxCbt(1 To 1)
End If
MaxCbt(NbCbt) = Cbt
Application.StatusBar = NbCbt & " combinaison(s) à " _
& Max & " occurences (" & Format$(L / NbLignes, "0.0%") & ")"

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


End Sub

Merci d'avance
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Starwing
Le #3915451
Bonsoir beyazli37,

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

http://cjoint.com/?lkdCe15uib

Starwing
beyazli37
Le #3933671

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 :)

Publicité
Suivre les réponses
Poster une réponse
Anonyme