Somme de produits 2 à 2, 3 à 3 etc

Bonjour,

Dans une ligne donnée "A1:H1" j'aimerais pouvoir réaliser la sommes des produits de toutes les combinaisons possibles plutôt que de devoir tout taper manuellement en mode A1*B1+A1*C1 ... G1*H1 (en 2 à 2) et A1*B1*C1... F1*G1*H1 (en 3 à 3).

Existe t-il une formule pour automatiser ce calcul ?

Bonjour,

C'est quoi le but en fait ? Je n'arrive pas à voir ce que ça représente.

eric

les combinaisons du cube Rubick ?

mais il faudra faire quelques autres calculs en plus

Bonjour,

une proposition via une fonction personnalisée.

génère toutes les combinaisons de 2 à 9 nombres donnés, et fait la somme des produits

soit 1234

12 (2), 13(3),14(4),23(6),24(8),34(12),123(6),124(8),134(12),234(24),1234(24) = 109

7sumcombi.xlsm (14.13 Ko)

Il est question précisément ici de calculer des cotes dans le cadres de paris sportifs en systèmes.

Je donne de 3 à 5 cotes dans les cases prévues à cet effet et ailleurs ça me calcule la cote validée pour mon système.

Merci pour ton essai de solution h2so4 mais ça ne semble pas marcher.

Sur un test avec 2, 3 et 4 qui devrait me donner 26 (2*3 + 2*4 + 3*4), ça trouve 50.

Edit : ça rajoute en plus le 2*3*4 en fait, là où je ne voudrais que les combinaisons 2 à 2 (pour des paris en 2/3, 2/4 etc) ou 3 à 3 (3/4, 3/5 etc).

Bonjour,

j'ai mis un paramètre supplémentaire à la fonction pour indiquer le nombre de nombres dont il faut faire le produit.

7sumcombi.xlsm (14.21 Ko)

Super, merci beaucoup !

Comment enregistrer cette fonction pour pouvoir l'utiliser à l'avenir ?

bonjour,

tu copies le code qui suit, (tout sélectionner puis ctrl-C)

Function sumcombi(r, g)
    If r.Count > 9 Then sumcombi = CVErr(xlErrValue): Exit Function
    If g > r.Count Then sumcombi = CVErr(xlErrValue): Exit Function
    sumcombi = combi(g, r)
End Function
Function combi(n, r, Optional niveau = 1, Optional s = 0, Optional ni = 1, Optional seq = "")
    For i = ni To r.Count
        seq = seq & i
        If niveau = n Then
            p = 1
            For j = 1 To n
                a = Mid(seq, j, 1)
                p = p * r(a)
            Next j
            s = s + p
        Else
            combi n, r, niveau + 1, s, i + 1, seq
        End If
        seq = Left(seq, Len(seq) - 1)
    Next i
    If niveau = 1 Then combi = s
End Function

tu vas dans excel

tu fais alt-F11

tu cliques sur personal.xlsb

tu colles le code (ctrl-V)

tu sauves

la fonction devrait être disponible.

En cliquant sur personal.xlsb ça ne m'ouvre rien de particulier où je pourrais coller le code.

Bonjour,

a partir de là, tu fais

insertion -> module

et tu colles le code via ctrl-V

tu fais alt-F11 pour revenir en excel

la fonction devrait être disponible, en quittant excel n'oublie pas d'enregistrer les modifications de personal.xslb

Bump.

Bonjour,

supprime le code dans sumcombi.xlsm et ne garde que le code dans personal.xlsb.

Un grand merci ça marche niquel.

Juste une toute dernière question liée à un bug que je n'arrive pas à résoudre.

Sur une séquence de 10 cotes le code générait une erreur #VALEUR! et j'ai vu que ça venait de la ligne originale "If r.Count > 9" que j'ai donc remplacée par "If r.Count > 10". Le bug que je vais te détailler est potentiellement lié au fait qu'une autre modification est à effectuer pour pouvoir utiliser le code avec 10 valeurs mais je vais le détailler pour que tu puisses m'aider au mieux.

En modifiant le r.count de 9 à 10, l'erreur #VALEUR! saute et un nombre apparaît mais pas le bon.

Prenons l'exemple d'une séquence de 10 valeurs à 1, entrées dans les cases B2:K2 et générant ce résultat :

On a bien une cote moyenne de 1 et la "cote validée" qui est calculée à partir de la formule sumcombi.

sumcombi($B$2:$D$2;2) pour le 2 sur 3, calcul 2 à 2 sur les 3 cases B2, C2, D2.

sumcombi($B$2:$J$2;7) pour le 7 sur 9, calcul 7 à 7 sur les 9 cases de B2 à J2.

Etc.

Les valeurs correspondent bien.

Maintenant je fais varier J2, je la mets à 2.

Les cotes moyennes non impactées sont celles avant le 2 sur 9 : pas de soucis.

Les cotes moyennes impactées sont celles à partir du 2 sur 9 : pas de soucis.

Le fait que Nb combi * cote moyenne ne corresponde pas à cote validé n'a pas d'importance ici, ce qui'il faut noter c'est que faire varier J2 fait varier la cote moyenne ET la cote validée des paris "x sur 9".

Maintenant on reprend notre cas avec uniquement des 1.

Voilà ce qui se passe quand je fais varier K2, ici à 2 :

Les cotes moyennes sont correctement impactées, j'obtiens le résultat attendu.

Ici pour 9 valeurs à 1 et une valeur à 4, un total de 13 et donc une cote moyenne de 1.30 mis à la puissance correspondante au système choisi. 1.30^2=1.69 pour un 2/10, 1.30^7=6.27 pour un 7/10 etc.

Par contre les les cotes validées ne bougent absolument pas.

Avec les cases de B2 à J2 je n'ai pas ce soucis, ça ne le fait que pour K2.

On voit qu'avec J2 à 2, il y'a un décalage de 1 dans les cotes validées des systèmes x sur 10.

46 au lieu de 45 par exemple dans le 2 sur 10.

Ce décalage de 1 se reproduit de façon identique avec les cellules entre D2 (la 3ème cote) et J2 (la 9ème) pour une même modification.

Par contre il est différent avec C2, et encore différent avec B2.

Une idée ? Peut-être un soucis avec une incrémentation quelque part ?

Merci d'avance, si quelque chose n'est pas clair ou que tu as besoin d'infos supplémentaires n'hésite pas.

Bonsoir,

essaie avec cette version de la fonction

Function sumcombi(r, g)
    If g > r.Count Then sumcombi = CVErr(xlErrValue): Exit Function
    sumcombi = combi(g, r)
End Function
Function combi(n, r, Optional niveau = 1, Optional s = 0, Optional ni = 1, Optional seq = "")
    For i = ni To r.Count
        seq = seq & Chr(i + 64)
        If niveau = n Then
            p = 1
            For j = 1 To n
                a = Asc(Mid(seq, j, 1)) - 64
                p = p * r(a)
            Next j
            s = s + p
        Else
            combi n, r, niveau + 1, s, i + 1, seq
        End If
        seq = Left(seq, Len(seq) - 1)
    Next i
    If niveau = 1 Then combi = s
End Function

Le problème m'a tout l'air d'être réglé.

Un grand grand merci pour ton aide à travers les différentes étapes et bonne continuation.

Rechercher des sujets similaires à "somme produits etc"