Limitations de calculdans la formule =TbPermutations($B$4:$B$8,B10)

Bonjour à tous

Je suis vraiment novice en VBA sur excel, je cherche une solution pour ce tableau de permutation. Il me manque un paramètre pour lever la limitations de permutations si quelqu'un peux m'aide çà serait vraiment geniale :

Récement j'ai voulu modifier le fichier ci joint

6permutations-1.zip (28.06 Ko)

J'ai rallongé la colonne Valeur et la colonnes V1, V2,V3, V4 et V5

J'ai bien sur aussi modifié le code.

escel2

J'ai modifié les formules dans les colonnes V1, V2,V3, V4 et V5 suivant les coordonées:

Coordonnées valeur $B$4:$B$17

Coordonnée K: B19

TbPermutations($B$4:$B$17,B19)

excel1

Lorsque je change la formule en TbPermutations($B$4:$B$17,B19)

J'ai le message l'erreur: #value!

Comment puis je passer ce problème et augmenter les possibilités de permutations.

excel3

A moins que je me trompe et que la vérité est ailleurs.

Merci d'avance

Arnaud

4permutations-1.zip (28.04 Ko)

Bonjour,

B19 est vide dans le fichier joint...
eric

Bonjour,

Le fichier joint est le fichier original comme le premier tableau sur la photo 1. le code visual basic est intact, sans modification aucune.

Le tableau modifié c'est la photo 2.

Je n'est pas joint le fichier modifié, parce ce que j'ai simplement modifié le tableau comme sur la photo 2.

je n'ai pas touché le code visual basic dans mon fichier. Il est intact comme dans le fichier joint.

CDLT

Bonjour,

ok. Plus qu'à attendre le courageux qui voudra bien refaire depuis tes photos le fichier que tu as sur ton PC
eric

Bonjour,

Ci joint mon fichier

Cordialement

Arnaud

Bonjour,

ton fichier est au format xls et donc limité à 65535 lignes.

voici une version xlsm (sélectionner les lignes et les colonnes devant recevoir le résultat, introduire ta formule et faire une validation matricielle. Sur office 365, mettre la formule en D4 et faire une simple validation)

Bonjour,

Je vous remercie je savais pas que XLSM acceptais plus de lignes. Quelle est sa limite ?

J'ai selectionner l'emplacement de D4 à H304 et puis j'ai mis la formule puis j'ai fait shift+crtl+entrée.

Mais j'ai maintenant #VALUE! partout.

J'ai joint le fichier en question.

Cordialement

Arnaud

Bonsoir,

la limite en nombre de lignes est 1048576, mais le nombre de permutations est >20.000.000 tu obtiens un dépassement de la capacité d'excel VBA.

ok , donc c'est pas possible?

Je voudrais exclure des numéros dans le code comme le deux

Est ce que c'est la bonne mannière ?

If NbreNum = 2 then

Num1= 0 to NBreNum Num2 = Num1 + 1 To NbreNum Num3 = Num2 + 1 To NbreNum
Num4 = Num3 + 1 To NbreNum
Num5 = Num4 + 1 To NbreNum

End If

Sub Test()

Dim Num1 As Byte
Dim Num2 As Byte
Dim Num3 As Byte
Dim Num4 As Byte
Dim Num5 As Byte
Dim NbreNum As Byte
Dim L As Long, C As Byte
Dim T#

T = Timer
L = 1
C = 0
Application.ScreenUpdating = False

NbreNum = 50

For Num1 = 1 To NbreNum
For Num2 = Num1 + 1 To NbreNum
For Num3 = Num2 + 1 To NbreNum
For Num4 = Num3 + 1 To NbreNum
For Num5 = Num4 + 1 To NbreNum
Cells(L, 1 + C) = Num1 & ";" & Num2 & ";" & Num3 & ";" & Num4 & ";" & Num5
L = L + 1
If L = 65001 Then
C = C + 1
L = 1
End If
Next Num5
Next Num4
Next Num3
Next Num2
Next Num1

Application.ScreenUpdating = True

MsgBox Format((65000 * C) + L, "#,##0") & " Combinaisons calculées en " & Format(Timer - T, "0.00") & " secondes."

End Sub

Cordialement

Arnaud

Bonsoir,

A voir ton code, tu es plutôt intéressé par des combinaisons que des permutations.

Voici une adaptation du code (fonction remplacée par une macro), à lancer par bouton en feuille permutations

Sub combinaisons()
    Dim wsa As Worksheet, ti As Double, v, n As Long
    ti = Timer
    col = 0
    k = 0
    Set wsa = Sheets("combinaisons")
    v = Application.Transpose(F2.Range("B4:B34"))
    n = F2.Range("B36")
    combine wsa, v, n
    If k > 0 Then
        col = col + 1
        wsa.Cells(1, col).Resize(k, 1) = t
    End If
    MsgBox "nombre de combinaisons : " & (col - 1) * 1000000 + k & " en " & Timer - ti & " sec"
End Sub

Sub combine(wsa As Worksheet, v, n As Long, Optional nv As Long = 1, Optional ni As Long = 1, Optional s As String = "")
    Dim olds As String, i As Long
    olds = s
    ei = UBound(v) - n + nv
    For i = ni To ei
        If v(i) <> "" Then
            s = s & v(i) & " "
            If nv = n Then
                k = k + 1
                t$(k, 1) = s
                If k = 1000000 Then
                    col = col + 1
                    wsa.Cells(1, col).Resize(k, 1) = t
                    k = 0
                End If
            Else
                combine wsa, v, n, nv + 1, i + 1, s
            End If
            s = olds
        End If
    Next i
End Sub

Bonjour,

Je te remercie pour le programme.

Comment je peux implanter la fonction Not [CONDITION] ?
La condition doit être fausse si il y a le numéro deux.

Cordialement

Arnaud

bonjour,

et si tu enlevais simplement ce nombre de ta liste de nombres ? j'ai adapté la macro pour ne pas tenir compte des cellules vides dans la plage B4:B34

Dans le tableau bleu : je met cette formule =TbPermutations($B$4:$B$34,B36)

J'ai effacé le deux dans le tableau valeur.

Mais je loupe qqch j'ai toujour erreur de valeur

Cordialement

Arnaud

re-bonjour,

comme indiqué dans un message précédent, le code fourni est une macro (et non plus une fonction personnalisée). Il faut la lancer en cliquant sur le bouton combinaisons (après avoir effacé le 2 si tu le souhaites dans ta liste B4:B34). Tu verras les résultats sur la feuille "combinaisons"

Je t'ai laissé la fonction TbPermutations (mais elle n'est pas adaptée pour gérer tant de valeurs) et donc tu devrais effacer la formule en D4.

Bonjour,

Merci beaucoup

C'est parfait.

Cordialement

Arnaud

Rechercher des sujets similaires à "limitations calculdans formule tbpermutations b10"