Je me demandais s'il existait une fonction ou macro pour trouver par exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui
donnent une somme précise.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Angel Dust
"Angel Dust" a écrit dans le message news: bqpuk4$sgr$
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12 et 20.
Merci pour votre aide
"Angel Dust" <fuk@caramail.com> a écrit dans le message news:
bqpuk4$sgr$1@s1.read.news.oleane.net...
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par
exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui
donnent une somme précise.
Merci d'avance
Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles
sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12
et 20.
"Angel Dust" a écrit dans le message news: bqpuk4$sgr$
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12 et 20.
Merci pour votre aide
Avec ceci ça va marcher (trouvé sur forum exel programming) code de Tom Ogilvy
' TOM Ogilvy 10/2003 ' placer un nombre en A1 ' placer en B1:Bxx les nombres qui peuvent totaliser le nombre en A1 ' laisser libres les colonnes C et au delà ' max 254 combinaisons !!! ' Sub RetrouveLeTotal() Dim i As Long Dim bits As Long Dim varr As Variant Dim varr1() As Long Dim rng As Range Dim icol As Long Dim Num, Tot icol = 0 Set rng = Range(Range("B1"), Range("B1").End(xlDown)) Num = 2 ^ rng.Count - 1 bits = rng.Count varr = rng.Value ReDim varr1(0 To bits - 1, 0 To 0) For i = 0 To Num bldbin i, bits, varr1 Tot = Application.SumProduct(varr, varr1) If Tot = [A1] Then icol = icol + 1 rng.Offset(0, icol) = varr1 If icol = 256 Then MsgBox "too many columns, i is " & i & " of " & Num & " combinations checked" Exit Sub End If End If Next End Sub
Sub bldbin(Num As Long, bits As Long, arr() As Long) Dim lNum As Long, i As Long, Cnt lNum = Num Cnt = 0 For i = bits - 1 To 0 Step -1 If lNum And 2 ^ i Then Cnt = Cnt + 1 arr(i, 0) = 1 Else arr(i, 0) = 0 End If Next End Sub
-----Message d'origine----- "Angel Dust" a écrit dans le message news:
bqpuk4$sgr$
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par
exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui
donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles
sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12
et 20.
Merci pour votre aide
.
Avec ceci ça va marcher (trouvé sur forum exel programming)
code de Tom Ogilvy
' TOM Ogilvy 10/2003
' placer un nombre en A1
' placer en B1:Bxx les nombres qui peuvent totaliser le
nombre en A1
' laisser libres les colonnes C et au delà
' max 254 combinaisons !!!
'
Sub RetrouveLeTotal()
Dim i As Long
Dim bits As Long
Dim varr As Variant
Dim varr1() As Long
Dim rng As Range
Dim icol As Long
Dim Num, Tot
icol = 0
Set rng = Range(Range("B1"), Range("B1").End(xlDown))
Num = 2 ^ rng.Count - 1
bits = rng.Count
varr = rng.Value
ReDim varr1(0 To bits - 1, 0 To 0)
For i = 0 To Num
bldbin i, bits, varr1
Tot = Application.SumProduct(varr, varr1)
If Tot = [A1] Then
icol = icol + 1
rng.Offset(0, icol) = varr1
If icol = 256 Then
MsgBox "too many columns, i is " & i & " of " & Num & "
combinations checked"
Exit Sub
End If
End If
Next
End Sub
Sub bldbin(Num As Long, bits As Long, arr() As Long)
Dim lNum As Long, i As Long, Cnt
lNum = Num
Cnt = 0
For i = bits - 1 To 0 Step -1
If lNum And 2 ^ i Then
Cnt = Cnt + 1
arr(i, 0) = 1
Else
arr(i, 0) = 0
End If
Next
End Sub
-----Message d'origine-----
"Angel Dust" <fuk@caramail.com> a écrit dans le message
news:
bqpuk4$sgr$1@s1.read.news.oleane.net...
Bonjour,
Je me demandais s'il existait une fonction ou macro
pour trouver par
exemple
dans une plage de 5 valeurs, quelles sont les valeurs
de cette plage qui
donnent une somme précise.
Merci d'avance
Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez
clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je
voudrais savoir quelles
sont les 2 valeurs qui me donnent en les ajoutant 32, ici
en l'occurrence 12
Avec ceci ça va marcher (trouvé sur forum exel programming) code de Tom Ogilvy
' TOM Ogilvy 10/2003 ' placer un nombre en A1 ' placer en B1:Bxx les nombres qui peuvent totaliser le nombre en A1 ' laisser libres les colonnes C et au delà ' max 254 combinaisons !!! ' Sub RetrouveLeTotal() Dim i As Long Dim bits As Long Dim varr As Variant Dim varr1() As Long Dim rng As Range Dim icol As Long Dim Num, Tot icol = 0 Set rng = Range(Range("B1"), Range("B1").End(xlDown)) Num = 2 ^ rng.Count - 1 bits = rng.Count varr = rng.Value ReDim varr1(0 To bits - 1, 0 To 0) For i = 0 To Num bldbin i, bits, varr1 Tot = Application.SumProduct(varr, varr1) If Tot = [A1] Then icol = icol + 1 rng.Offset(0, icol) = varr1 If icol = 256 Then MsgBox "too many columns, i is " & i & " of " & Num & " combinations checked" Exit Sub End If End If Next End Sub
Sub bldbin(Num As Long, bits As Long, arr() As Long) Dim lNum As Long, i As Long, Cnt lNum = Num Cnt = 0 For i = bits - 1 To 0 Step -1 If lNum And 2 ^ i Then Cnt = Cnt + 1 arr(i, 0) = 1 Else arr(i, 0) = 0 End If Next End Sub
-----Message d'origine----- "Angel Dust" a écrit dans le message news:
bqpuk4$sgr$
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par
exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui
donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles
sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12
et 20.
Merci pour votre aide
.
Piotr
Bonjour,
Ta question n'est pas assez précise. - As-tu toujours 5 valeurs ? -Les sommes ne doivent-elles se faire que par 2 valeurs ou bien peut-il y en avoir 3, 4, ... pour atteindre 32 (ou un autre nombre) ? Et si la valeur elle-même se trouve dans la liste (si on a un 32 dans les 5 valeurs), faut-il l'indiquer ou l'exclure. ? -Quand il y a plusieurs solutions (dans ton exemple, il y a également 15+17), y a-t-il une règle pour déterminer celle que l'on doit conserver ? -Sous quelle forme souhaites-tu le résultat ?
Dans le cas le plus simple (toujours 5 valeurs, des sommes 2 à 2, la première solution trouvée, résultat en chaîne de caractère) cela pourrait être une formule comme cela : NB : les 5 valeurs sont dans A1-A5, la valeur à chercher est en A2 =SI(ESTNA(RECHERCHEH(A2-A1;B1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-B1;C1:E1;1; FAUX));SI(ESTNA(RECHERCHEH(A2-C1;D1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-D1;E1 :E1;1;FAUX));"Aucun couple";D1&"+"&(A2-D1));C1&"+"&(A2-C1));B1&"+"&(A2-B1));A1&"+"&(A2-A1)) Remarque : il faut peut-être mettre des "$" dans les formules selon ce tu veux pouvoir modifier.
Dans les cas plus complexes, je pense qu'il faut une fonction VB spécifique... Mais je n'aurai pas le temps de te l'écrire car je dois m'en aller bientôt. Dans un cas général, je verrais bien une fonction récursive du genre (écrite plus en algo qu'en VB : il faudra traduire) : function TrouveSomme(Plage;Cible;n) as string dim x as string Si Plage.Count<n alors TrouveSomme="" Si Plage(n)=Cible alors TrouveSomme=Plage(n) Sinon si Page(n)>Cible alors TrouveSomme=TrouveSomme(Plage,Cible,n+1) Sinon si Plage(n)<Cible alors x=TrouveSomme(Plage,Cible-Plage(n),n+1) Si x="" alors TrouveSomme=TrouveSomme(Plage,Cible,n+1) Sinon TrouveSomme=Plage(n) & "+" & x Fin.Si Fin.Si End Function Plage est la liste de valeur, Cible la valeur à rechercher par une somme, et au début n vaut 1 (c'est le numéro d'ordre dans la liste). En l'état, la fonction s'arrête dès qu'elle trouve une solution. Il doit y avoir possibilité de la faire continuer pour toutes les trouver, mais il faut étudier le moyen de stocker le résultat.
Je ne sais pas si Excel accepte bien les fonctions récursives. Et puis il y a peut-être moyen d'optimiser cela en triant la liste de données par ordre croissant. A creuser.
J'espère que cela t'aidera.
Bon courage. Pierre.
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12
et 20.
Merci pour votre aide
Bonjour,
Ta question n'est pas assez précise.
- As-tu toujours 5 valeurs ?
-Les sommes ne doivent-elles se faire que par 2 valeurs ou bien peut-il y en
avoir 3, 4, ... pour atteindre 32 (ou un autre nombre) ? Et si la valeur
elle-même se trouve dans la liste (si on a un 32 dans les 5 valeurs),
faut-il l'indiquer ou l'exclure. ?
-Quand il y a plusieurs solutions (dans ton exemple, il y a également
15+17), y a-t-il une règle pour déterminer celle que l'on doit conserver ?
-Sous quelle forme souhaites-tu le résultat ?
Dans le cas le plus simple (toujours 5 valeurs, des sommes 2 à 2, la
première solution trouvée, résultat en chaîne de caractère) cela pourrait
être une formule comme cela :
NB : les 5 valeurs sont dans A1-A5, la valeur à chercher est en A2
=SI(ESTNA(RECHERCHEH(A2-A1;B1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-B1;C1:E1;1;
FAUX));SI(ESTNA(RECHERCHEH(A2-C1;D1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-D1;E1
:E1;1;FAUX));"Aucun
couple";D1&"+"&(A2-D1));C1&"+"&(A2-C1));B1&"+"&(A2-B1));A1&"+"&(A2-A1))
Remarque : il faut peut-être mettre des "$" dans les formules selon ce tu
veux pouvoir modifier.
Dans les cas plus complexes, je pense qu'il faut une fonction VB
spécifique... Mais je n'aurai pas le temps de te l'écrire car je dois m'en
aller bientôt. Dans un cas général, je verrais bien une fonction récursive
du genre (écrite plus en algo qu'en VB : il faudra traduire) :
function TrouveSomme(Plage;Cible;n) as string
dim x as string
Si Plage.Count<n alors TrouveSomme=""
Si Plage(n)=Cible alors TrouveSomme=Plage(n)
Sinon si Page(n)>Cible alors TrouveSomme=TrouveSomme(Plage,Cible,n+1)
Sinon si Plage(n)<Cible alors
x=TrouveSomme(Plage,Cible-Plage(n),n+1)
Si x="" alors TrouveSomme=TrouveSomme(Plage,Cible,n+1)
Sinon TrouveSomme=Plage(n) & "+" & x
Fin.Si
Fin.Si
End Function
Plage est la liste de valeur, Cible la valeur à rechercher par une somme, et
au début n vaut 1 (c'est le numéro d'ordre dans la liste).
En l'état, la fonction s'arrête dès qu'elle trouve une solution. Il doit y
avoir possibilité de la faire continuer pour toutes les trouver, mais il
faut étudier le moyen de stocker le résultat.
Je ne sais pas si Excel accepte bien les fonctions récursives.
Et puis il y a peut-être moyen d'optimiser cela en triant la liste de
données par ordre croissant.
A creuser.
J'espère que cela t'aidera.
Bon courage.
Pierre.
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par
exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui
donnent une somme précise.
Merci d'avance
Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles
sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence
12
Ta question n'est pas assez précise. - As-tu toujours 5 valeurs ? -Les sommes ne doivent-elles se faire que par 2 valeurs ou bien peut-il y en avoir 3, 4, ... pour atteindre 32 (ou un autre nombre) ? Et si la valeur elle-même se trouve dans la liste (si on a un 32 dans les 5 valeurs), faut-il l'indiquer ou l'exclure. ? -Quand il y a plusieurs solutions (dans ton exemple, il y a également 15+17), y a-t-il une règle pour déterminer celle que l'on doit conserver ? -Sous quelle forme souhaites-tu le résultat ?
Dans le cas le plus simple (toujours 5 valeurs, des sommes 2 à 2, la première solution trouvée, résultat en chaîne de caractère) cela pourrait être une formule comme cela : NB : les 5 valeurs sont dans A1-A5, la valeur à chercher est en A2 =SI(ESTNA(RECHERCHEH(A2-A1;B1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-B1;C1:E1;1; FAUX));SI(ESTNA(RECHERCHEH(A2-C1;D1:E1;1;FAUX));SI(ESTNA(RECHERCHEH(A2-D1;E1 :E1;1;FAUX));"Aucun couple";D1&"+"&(A2-D1));C1&"+"&(A2-C1));B1&"+"&(A2-B1));A1&"+"&(A2-A1)) Remarque : il faut peut-être mettre des "$" dans les formules selon ce tu veux pouvoir modifier.
Dans les cas plus complexes, je pense qu'il faut une fonction VB spécifique... Mais je n'aurai pas le temps de te l'écrire car je dois m'en aller bientôt. Dans un cas général, je verrais bien une fonction récursive du genre (écrite plus en algo qu'en VB : il faudra traduire) : function TrouveSomme(Plage;Cible;n) as string dim x as string Si Plage.Count<n alors TrouveSomme="" Si Plage(n)=Cible alors TrouveSomme=Plage(n) Sinon si Page(n)>Cible alors TrouveSomme=TrouveSomme(Plage,Cible,n+1) Sinon si Plage(n)<Cible alors x=TrouveSomme(Plage,Cible-Plage(n),n+1) Si x="" alors TrouveSomme=TrouveSomme(Plage,Cible,n+1) Sinon TrouveSomme=Plage(n) & "+" & x Fin.Si Fin.Si End Function Plage est la liste de valeur, Cible la valeur à rechercher par une somme, et au début n vaut 1 (c'est le numéro d'ordre dans la liste). En l'état, la fonction s'arrête dès qu'elle trouve une solution. Il doit y avoir possibilité de la faire continuer pour toutes les trouver, mais il faut étudier le moyen de stocker le résultat.
Je ne sais pas si Excel accepte bien les fonctions récursives. Et puis il y a peut-être moyen d'optimiser cela en triant la liste de données par ordre croissant. A creuser.
J'espère que cela t'aidera.
Bon courage. Pierre.
Bonjour,
Je me demandais s'il existait une fonction ou macro pour trouver par exemple
dans une plage de 5 valeurs, quelles sont les valeurs de cette plage qui donnent une somme précise.
Merci d'avance Stéphane
Oups je suis désolé, je crois que je n'ai pas été assez clair.
Par exemple, j'ai des valeurs 12 15 17 20 56 et je voudrais savoir quelles sont les 2 valeurs qui me donnent en les ajoutant 32, ici en l'occurrence 12
et 20.
Merci pour votre aide
Angel Dust
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la somme de n de ses élements, n étant également variable. Je ne dispose que du total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il
faut que je puisse trouver en fonction d'un nombre de valeurs variables, la
somme de n de ses élements, n étant également variable. Je ne dispose que du
total final, de la plage de recherche et du nombre de valeurs qui doivent
composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we
Stéphane
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la somme de n de ses élements, n étant également variable. Je ne dispose que du total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane
Piotr
Bonjour,
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux éviter la fonction récurcive, ce qui est probablement préférable car je ne sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de valeurs : comme il est assez combinatoire, son temps de calcul augmentera comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il faudra chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy (je n'ai pas pris le temps de l'analyser et il n'est pas très commenté). Il me semble qu'il manque comme paramètre ne nombre de valeurs à sommer pour obtenir le résultat. Dis-nous s'il te manque des éléments.
Bonne semaine. Pierre.
"Angel Dust" a écrit dans le message de news:bqq6ge$1pi$
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la
somme de n de ses élements, n étant également variable. Je ne dispose que du
total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane
Bonjour,
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux
éviter la fonction récurcive, ce qui est probablement préférable car je ne
sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de
valeurs : comme il est assez combinatoire, son temps de calcul augmentera
comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu
quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il
faudra
chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste
raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy
(je n'ai pas pris le temps de l'analyser et il n'est pas très commenté).
Il me semble qu'il manque comme paramètre ne nombre de valeurs
à sommer pour obtenir le résultat.
Dis-nous s'il te manque des éléments.
Bonne semaine.
Pierre.
"Angel Dust" <fuk@caramail.com> a écrit dans le message de
news:bqq6ge$1pi$1@s1.read.news.oleane.net...
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il
faut que je puisse trouver en fonction d'un nombre de valeurs variables,
la
somme de n de ses élements, n étant également variable. Je ne dispose que
du
total final, de la plage de recherche et du nombre de valeurs qui doivent
composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we
Stéphane
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux éviter la fonction récurcive, ce qui est probablement préférable car je ne sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de valeurs : comme il est assez combinatoire, son temps de calcul augmentera comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il faudra chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy (je n'ai pas pris le temps de l'analyser et il n'est pas très commenté). Il me semble qu'il manque comme paramètre ne nombre de valeurs à sommer pour obtenir le résultat. Dis-nous s'il te manque des éléments.
Bonne semaine. Pierre.
"Angel Dust" a écrit dans le message de news:bqq6ge$1pi$
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la
somme de n de ses élements, n étant également variable. Je ne dispose que du
total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane
Michel Gaboly
Bonjour,
Un facteur important à prendre en compte est l'existence de nombres négatifs.
Si ce n'est pas le cas, on peut éliminer les éventuels composants potentiels supérieurs au total, et sortir d'une boucle dès lors qu'un total intermédaire dépasse le total à trouver.
Bonjour,
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux éviter la fonction récurcive, ce qui est probablement préférable car je ne sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de valeurs : comme il est assez combinatoire, son temps de calcul augmentera comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il faudra chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy (je n'ai pas pris le temps de l'analyser et il n'est pas très commenté). Il me semble qu'il manque comme paramètre ne nombre de valeurs à sommer pour obtenir le résultat. Dis-nous s'il te manque des éléments.
Bonne semaine. Pierre.
"Angel Dust" a écrit dans le message de news:bqq6ge$1pi$
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la
somme de n de ses élements, n étant également variable. Je ne dispose que du
total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane
-- Cordialement,
Michel Gaboly http://www.gaboly.com
Bonjour,
Un facteur important à prendre en compte est l'existence de nombres
négatifs.
Si ce n'est pas le cas, on peut éliminer les éventuels composants potentiels
supérieurs au total, et sortir d'une boucle dès lors qu'un total intermédaire
dépasse le total à trouver.
Bonjour,
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux
éviter la fonction récurcive, ce qui est probablement préférable car je ne
sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de
valeurs : comme il est assez combinatoire, son temps de calcul augmentera
comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu
quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il
faudra
chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste
raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy
(je n'ai pas pris le temps de l'analyser et il n'est pas très commenté).
Il me semble qu'il manque comme paramètre ne nombre de valeurs
à sommer pour obtenir le résultat.
Dis-nous s'il te manque des éléments.
Bonne semaine.
Pierre.
"Angel Dust" <fuk@caramail.com> a écrit dans le message de
news:bqq6ge$1pi$1@s1.read.news.oleane.net...
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il
faut que je puisse trouver en fonction d'un nombre de valeurs variables,
la
somme de n de ses élements, n étant également variable. Je ne dispose que
du
total final, de la plage de recherche et du nombre de valeurs qui doivent
composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we
Stéphane
Un facteur important à prendre en compte est l'existence de nombres négatifs.
Si ce n'est pas le cas, on peut éliminer les éventuels composants potentiels supérieurs au total, et sortir d'une boucle dès lors qu'un total intermédaire dépasse le total à trouver.
Bonjour,
Si tu connais le nombre de valeurs qui doivent composer la somme, tu peux éviter la fonction récurcive, ce qui est probablement préférable car je ne sais pas comment Excel se comporte quand la récursivité devient importante.
En fait, ton problème peux devenir difficile si tu peux avoir beaucoup de valeurs : comme il est assez combinatoire, son temps de calcul augmentera comme le carré du nombre de valeur (si tu doubles le nombre de valeurs, tu quadruples le temps de calcul potentiel). Dans le cas d'un nombre élevé, il faudra chercher à optimiser l'algorithme. Dans le cas d'un nombre qui reste raisonnable, tu peux le gérer avec des boucles.
Je n'ai pas compris dans le détail l'algorithme qu'a donné Tom Ogilvy (je n'ai pas pris le temps de l'analyser et il n'est pas très commenté). Il me semble qu'il manque comme paramètre ne nombre de valeurs à sommer pour obtenir le résultat. Dis-nous s'il te manque des éléments.
Bonne semaine. Pierre.
"Angel Dust" a écrit dans le message de news:bqq6ge$1pi$
En fait (je sais je n'ai pas été clair, c'est la fin de semaine ;o)))), il faut que je puisse trouver en fonction d'un nombre de valeurs variables, la
somme de n de ses élements, n étant également variable. Je ne dispose que du
total final, de la plage de recherche et du nombre de valeurs qui doivent composer la somme.
Je vais étudier vos solutions. Merci encore. Bon we Stéphane