Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

obtenir Nbre de combinaisons

  • Initiateur de la discussion Initiateur de la discussion jad73
  • Date de début Date de début

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 !

jad73

XLDnaute Occasionnel
bonjour le forum
Mon intitulé je pense ,n'est pas tres explicite, je m'explique:
je cherche une formule ou petit programme pour obtenir des combinaisons de chiffres d'aprés un N(nombre) et n(numéros).
ex:N=10
....n=2,3,5,7,8
donc cela donne les combinaisons:7+3,8+2.
je n'ai pas de fichier puisque je commence
merci
 
Re : obtenir Nbre de combinaisons

Bonjour,

pas sûr d'avoir bien compris ton problème, mais regarde peut être du coté des fonctions "PERMUTATION" ou "COMBIN", sans doute lieu d'activer l'utilitaire d'analyse dans les macros complémentaires..

bon après midi
@+
 
Re : obtenir Nbre de combinaisons

Bonjour jad73, salut JM et Pierrot,

Un classeur de mister Ti modifié, qui définit les combinaisons de N(nombre) dont la somme correspond à diverses possibilités telles que = , >, < à une valeur donnée.
 

Pièces jointes

Re : obtenir Nbre de combinaisons

Re

jad73:
Saurais-tu retrouver ou se cache la solution ? *
(Un indice : Ti_ )
Fil 1
Fil 2
Fil 3
Fil 4
Fil 5
Fil 6
Fil 7
Fil 8
Fil 9
Fil 10
Fil 11

*: si bien entendu, j'ai bien compris ta question

EDITION: Mordiou, j'avions point rafraichi !
Bonjour CBernardT, bon bah voila jad73 tu as la réponse au petit jeu qui précède.

EDITION2: Bonjour ROGER2327, fréquentant le forum à une époque ou Ti le fréquentait (et vous pas encore), c'est sur son pseudo que j'ai fait ma recherche (pour trouver les 11 fils ci-dessus). 😱
La prochaine fois , je ne vous oublierai pas.
 
Dernière édition:
Re : obtenir Nbre de combinaisons

Bonjour à tous
Outre les liens cités plus haut, voir aussi ici.
Je joins une version révisée de ma contribution à cette discussion.​
ROGER2327
#4241


Jeudi 26 Absolu 138 (Saint Joseb, notaire à la mode de Bretagne, SQ)
12 Vendémiaire An CCXIX
2010-W39-7T01:57:54Z
 

Pièces jointes

Re : obtenir Nbre de combinaisons

Bonjour le forum,Roger2327
C'est parfait roger,je bataillais avec les autres fil vu que je ne suis pas trés doué en vba,la avec ton programme c'est simple et clair.
merci
 
Re : obtenir Nbre de combinaisons

Rebonjour le forum,Roger2327

Comme je te le disais ton programme me va bien,j'ai juste modifié la zone de données car la mienne comporte au minimum 15 chiffres ce qui fait un nombre impressionnant de combinaisons(728) serait-il possible d'avoir une borne pour le résultat des combinaisons par exemple n'afficher que celles qui ont entre 8 et 10 chiffres,jamais supérieur a 10 chiffres n'y mème inferieur a 7 chiffres.
merci encore
 
Re : obtenir Nbre de combinaisons

Re...
L'adaptation nécessaire pour n'afficher que les sommes d'un nombre déterminé de termes n'est pas difficile. Mais le nombre de paramètres devenant plus important, il me semble convenable de placer ces paramètres dans la procédure d'appel et de les passer ensuite à la procédure principale.

Le code devient donc :
  1. dans le module de feuille :
    Code:
    [COLOR="DarkSlateGray"][B]Private Sub CommandButton1_Click()
      [COLOR="DarkOrange"]'Syntaxe :
      'toto_1 Cellule contenant le nombre à atteindre, Zone des données, Nb.minimum de termes, Nb.maximum de termes[/COLOR]
      toto_1 [J1], Range("A5:H6"), [B2], [B3]
    End Sub[/B][/COLOR]
  2. dans un module standard :
    Code:
    [COLOR="DarkSlateGray"][B]Sub toto_1(cible As Range, data As Range, tmin%, tmax%)
    Dim oDat(), v#, n%, dn%, bs%, i&, j%, tmp#, s$, oCel As Range, oColl As New Collection
      bs = -1
      For Each oCel In data
        If Not IsEmpty(oCel) Then bs = bs + 1: ReDim Preserve oDat(bs): oDat(bs) = oCel.Value
      Next oCel
      tmax = WorksheetFunction.Min(bs, Abs(tmax) - bs * (tmax = 0))
      tmin = WorksheetFunction.Min(tmax, WorksheetFunction.Max(1, tmin))
      With cible
        v = Round(cible.Value, 5)
        If Not IsEmpty(.Offset(1, 0)) Then .Offset(1, 0).Resize(.End(xlDown).Row - 1, 1).ClearContents
        If bs > -1 Then
          For i = 0 To bs - 1
            For j = i + 1 To bs
              If oDat(i) < oDat(j) Then tmp = oDat(i): oDat(i) = oDat(j): oDat(j) = tmp
            Next j
          Next i
          For i = 0 To 2 ^ (bs + 1) - 1
            tmp = 0
            n = 0
            For j = 0 To bs
              dn = i \ (2 ^ j) Mod 2
              tmp = tmp + oDat(j) * dn
              n = n + dn
            Next j
            If Round(tmp, 5) = v Then
                If (tmin <= n) * (n <= tmax) Then
                s = "'="
                For j = 0 To bs
                  s = s & IIf(i \ (2 ^ j) Mod 2, oDat(j) & "+", "")
                Next j
                On Error Resume Next
                oColl.Add Item:=Left$(s, Len(s) - 1), Key:=Left$(s, Len(s) - 1)
                On Error GoTo 0
              End If
            End If
          Next i
          If oColl.Count Then
            ReDim oDat(1 To oColl.Count, 0)
            For i = 1 To oColl.Count
              oDat(i, 0) = oColl(i)
            Next i
            .Offset(1, 0).Resize(oColl.Count, 1).Value = oDat
          End If
        End If
      End With
    End Sub[/B][/COLOR]

Une remarque : vous utilisez au moins quinze nombres (car il s'agit de nombres, pas de chiffres). Cette procédure étant une bricole assez grossière, sa durée d'exécution croît exponentiellement en fonction du nombre de nombres passés en paramètres (en gros, doublement de la durée pour chaque nombre supplémentaire). Par conséquent, au-delà d'une vingtaine de nombres les performances vont très-vite se dégrader...​
ROGER2327
#4243


Jeudi 26 Absolu 138 (Saint Joseb, notaire à la mode de Bretagne, SQ)
12 Vendémiaire An CCXIX
2010-W39-7T15:27:02Z
 

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

D
Réponses
4
Affichages
1 K
S
  • Question Question
Réponses
7
Affichages
2 K
SebastienN
S
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…