Utilisation du solveur
Neyrda76
Messages postés
3
Statut
Membre
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour,
Voila je voudrais utiliser Excel pour faire quelque chose d'un petit peu compliqué et j'espère que des gens calés sur Excel pourront me renseigner :)
Donc je souhaite réaliser la chose suivante (les explications pourront paraitre confuses, mais c'est très "simple" en fait :
"A partir d'une liste de nombre, je voudrait trouver la combinaison de 3 nombres qui donne un autre nombre x connu".
En gros, dans une liste de 20 nombre à virgule, je souhaite trouver quelle combinaison de 3 nombre (la somme de ces 3 nombres est égal a un certain chiffre connus (par exemple 1500,45)
Exemple simple :
Nombres :
1
2
3
4
5
6
Nombre à atteindre : 9
Quantité de nombre utilisé : 2
Réponse : 5 + 4 ou 6 + 3
Dans le cas présent, c'est simple et ca se fait à vue de nez, mais dans mon cas j'ai 20 nombres et c'est la somme de 3 nombres qu'il faut trouver.
Dans la pratique, j'ai besoin de ça dans un probleme de trésorerie : J'ai une liste de factures avec les montants de celles-ci, et j'ai une remise de chèque de 3 chèques. Je ne connais que le total de cette remise de chèque et je souhaite savoir quelles factures sont concernées par cette remise.
Merci d'avance aux âmes généreuses qui pourront se creuser les méninges (un petit peu) sur ce casse tête.
Neyrda76
Voila je voudrais utiliser Excel pour faire quelque chose d'un petit peu compliqué et j'espère que des gens calés sur Excel pourront me renseigner :)
Donc je souhaite réaliser la chose suivante (les explications pourront paraitre confuses, mais c'est très "simple" en fait :
"A partir d'une liste de nombre, je voudrait trouver la combinaison de 3 nombres qui donne un autre nombre x connu".
En gros, dans une liste de 20 nombre à virgule, je souhaite trouver quelle combinaison de 3 nombre (la somme de ces 3 nombres est égal a un certain chiffre connus (par exemple 1500,45)
Exemple simple :
Nombres :
1
2
3
4
5
6
Nombre à atteindre : 9
Quantité de nombre utilisé : 2
Réponse : 5 + 4 ou 6 + 3
Dans le cas présent, c'est simple et ca se fait à vue de nez, mais dans mon cas j'ai 20 nombres et c'est la somme de 3 nombres qu'il faut trouver.
Dans la pratique, j'ai besoin de ça dans un probleme de trésorerie : J'ai une liste de factures avec les montants de celles-ci, et j'ai une remise de chèque de 3 chèques. Je ne connais que le total de cette remise de chèque et je souhaite savoir quelles factures sont concernées par cette remise.
Merci d'avance aux âmes généreuses qui pourront se creuser les méninges (un petit peu) sur ce casse tête.
Neyrda76
A voir également:
- Utilisation du solveur
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- La ressource demandée est en cours d'utilisation - Forum Téléphones & tablettes Android
- Logiciel en Cours d'utilisation ? ✓ - Forum Logiciels
- Family link temps d'utilisation ne fonctionne pas - Forum Contrôle parental
5 réponses
Bonjour à tous,
Pour le fun je me suis amusé à créer une Fonction en VBA. La voila :
Voici l'exemple sur ci-joint:
http://www.cijoint.fr/cjlink.php?file=cj200911/cij4it6JYY.xls
J'ai repris l'exemple de Raymond dans le premier cas et dans le second tableau un exemple avec plusieurs solutions. On doit pouvoir généraliser à n valeurs au lieu de 3 mais bon ....
Il y a peut-être plus simple ..
A+
Pour le fun je me suis amusé à créer une Fonction en VBA. La voila :
Private Function TROUVE_CIBLE(Liste As Range, Cible As Double, Précis As Double) As Variant
' Cherche dans la liste "Liste" en colonne les combinaisons de trois valeurs
' dont la somme est égale à "Cible" à la précision "Précis" prés
' Le résultat est un tableau de Triplets (dans l'exemple 10 au maximum)
' Il faut utiliser la fonction dans une formule matricielle (10 lignes et 3 colonnes)
' en validant par <Ctrl><Shift><Entrée>
Dim Rang1 As Integer, Rang2 As Integer, Rang3 As Integer
Dim Isol As Integer, Der As Integer
Dim Result(10, 3) As Double
Isol = 0
Der = Liste.Count
For Rang1 = 1 To Der
For Rang2 = Rang1 + 1 To Der
For Rang3 = Rang2 + 1 To Der
If Liste(Rang1) + Liste(Rang2) + Liste(Rang3) <= Cible + Précis And _
Liste(Rang1) + Liste(Rang2) + Liste(Rang3) >= Cible - Précis Then
Result(Isol, 0) = Liste(Rang1)
Result(Isol, 1) = Liste(Rang2)
Result(Isol, 2) = Liste(Rang3)
Isol = Isol + 1
End If
Next Rang3
Next Rang2
Next Rang1
If Isol = 0 Then
TROUVE_CIBLE = "Insoluble"
Else
TROUVE_CIBLE = Result
End If
End Function
Voici l'exemple sur ci-joint:
http://www.cijoint.fr/cjlink.php?file=cj200911/cij4it6JYY.xls
J'ai repris l'exemple de Raymond dans le premier cas et dans le second tableau un exemple avec plusieurs solutions. On doit pouvoir généraliser à n valeurs au lieu de 3 mais bon ....
Il y a peut-être plus simple ..
A+
Bonsoir
Je ne veux pas vous décourager, mais outre le fait que cela parait difficile à formuler, voire irréaliste, pensez vous que le nombre de solutions possibles dans votre liste vous permmettra de retrouver vos factures Sans riques d'erreur?
Car votre modéle et facile à interprèter, mais si vous le faite avec trois 6,trois 3 trois 4 et trois 5 ça devient coton!
combien avez vous de factures à traiter?
Crdlmnt
PS: dans la liste si dessous,et en conservant deux variables seulement autour du nombre 1000, il y a 11 façon d'obtenir 4600,10 en tournant autour du nombre 100, 11 en tournant autour du nombre 200 etc.....
je n'ai pas calculé, mais je pense qu'au total on doit dépasser les 150 même 200 solutions...!
100
200
300
400
500
600
700
800
900
1000
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2200
2300
2400
2500
2600
2700
2800
2900
3000
3100
3200
Je ne veux pas vous décourager, mais outre le fait que cela parait difficile à formuler, voire irréaliste, pensez vous que le nombre de solutions possibles dans votre liste vous permmettra de retrouver vos factures Sans riques d'erreur?
Car votre modéle et facile à interprèter, mais si vous le faite avec trois 6,trois 3 trois 4 et trois 5 ça devient coton!
combien avez vous de factures à traiter?
Crdlmnt
PS: dans la liste si dessous,et en conservant deux variables seulement autour du nombre 1000, il y a 11 façon d'obtenir 4600,10 en tournant autour du nombre 100, 11 en tournant autour du nombre 200 etc.....
je n'ai pas calculé, mais je pense qu'au total on doit dépasser les 150 même 200 solutions...!
100
200
300
400
500
600
700
800
900
1000
1100
1200
1300
1400
1500
1600
1700
1800
1900
2000
2100
2200
2300
2400
2500
2600
2700
2800
2900
3000
3100
3200
A vue de nez, il n'y a qu'une seule solution possible.
Les montants sont très précis. Il s'agit de montant de facture (genre 1240,65 145,56 ... )
Et le montant de cette remise de chèque est lui aussi très précis ( 2430,45 ou dans le même genre.)
Je suis quasiment certain qu'il n'y a qu'une seule combinaison, et surtout, il n'y a pas 2 factures de même montant
[EDIT] Environ 25 factures.
Les montants sont très précis. Il s'agit de montant de facture (genre 1240,65 145,56 ... )
Et le montant de cette remise de chèque est lui aussi très précis ( 2430,45 ou dans le même genre.)
Je suis quasiment certain qu'il n'y a qu'une seule combinaison, et surtout, il n'y a pas 2 factures de même montant
[EDIT] Environ 25 factures.
Rassurez vous, s'il y en une , il y aura certainement dans les compètences de forum quelqu'un pour la trouver;
(Je ne sais pas faire, mais je suis loin d'être une référence)
pour facilter la prospection, vous devriez peut être diffuser une liste exemple des montants à traiter.
Crdlmnt
(Je ne sais pas faire, mais je suis loin d'être une référence)
pour facilter la prospection, vous devriez peut être diffuser une liste exemple des montants à traiter.
Crdlmnt
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour.
Vaucluse (salut, vieux frère !) a parfaitement raison au post 1 (premier paragraphe) comme au post 4 (faites-nous voir cette liste et ce montant).
"En gros, dans une liste de 20 nombre à virgule, je souhaite trouver quelle combinaison de 3 nombre (la somme de ces 3 nombres est égal a un certain chiffre connus (par exemple 1500,45)"
1) Inscris tes 20 nombres dans les cellules de A1 à A20 et ton total connu en C1
2) Fais un tri croissant de la colonne A
3) En B3 saisis la formule =C1-($A$1+$A$2+A3) et recopie jusqu'à B20
4) En commençant par la ligne 20, élimine toutes les lignes pour lesquelles le résultat colonne B est négatif
Cette manip devrait te permettre d'écarter déjà quelques chèques d'un montant trop élevé ; elle est d'autant plus efficace que les chèques sont de valeurs très différentes.
https://www.cjoint.com/?lgfRBzUgHs
Vaucluse (salut, vieux frère !) a parfaitement raison au post 1 (premier paragraphe) comme au post 4 (faites-nous voir cette liste et ce montant).
"En gros, dans une liste de 20 nombre à virgule, je souhaite trouver quelle combinaison de 3 nombre (la somme de ces 3 nombres est égal a un certain chiffre connus (par exemple 1500,45)"
1) Inscris tes 20 nombres dans les cellules de A1 à A20 et ton total connu en C1
2) Fais un tri croissant de la colonne A
3) En B3 saisis la formule =C1-($A$1+$A$2+A3) et recopie jusqu'à B20
4) En commençant par la ligne 20, élimine toutes les lignes pour lesquelles le résultat colonne B est négatif
Cette manip devrait te permettre d'écarter déjà quelques chèques d'un montant trop élevé ; elle est d'autant plus efficace que les chèques sont de valeurs très différentes.
https://www.cjoint.com/?lgfRBzUgHs