Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 18/03/2010, 16h50   #1
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
Par défaut trouver les meilleures combinaisons

Bonjour à tous,


Je dois réaliser sous EXCEL un calcul matriciel important.
[a1.T1 a2.T2 a3.T3 a4.T4 a5.T5] inférieur ou égal à une valeur donnée, avec T des temps et a des nombres entiers.

Je souhaite trouver toutes les combinaisons de a qui vérifient la condition.
Je voulais savoir si EXCEL était capable automatiquement de faire incrémenter les valeurs des a, de manière à faire toutes les combinaisons possibles.


Merci à tous ceux qui prendront le temps de lire ce message et peut-être d'y répondre
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/03/2010, 17h04   #2
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Tu peux facilement imposer ton pas d'incrément, du genre :

Pour i de 1 à 5
Tant que a(i) x T(i) est pas égal à ce que je cherche je pose a(i) = a(i) + 1

Sinon VBA ne gère pas le calcul matriciel, tu es obligé(e) de passer par des boucles...
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 12h06   #3
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
donc si j'ai le genre de matrice:

6.n11.x11 / 8.n12.x12 / 10.n13.x13 / 14.n14.x14 / 6.n15.x15+8n16.x16 ...
6n21.x21 / 8.n22.x22 / 10.n23.x23 / 14.n24.x24 / 6.n25.x25+8.n26.x26
....

sup ou égal à la cadence journalière


6, 8, 10, 14 représentent mes volumes de camions
n le nombre de tours par camion
x le nombre de camions

par exemple, faut que je trouve les n et x fonctionnant pour uniquement des 6m3. Mais je peux également combiner des 6 et 8m3, des 6 et 10, ....

Est-ce que c'est possible de programmer ça en VBA?
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 12h35   #4
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Peux-tu être plus claire dans ton écriture de matrice et dans tes explications stp ? J'ai du mal à comprendre ton problème

Sinon de manière générale, si tu cherches à résoudre un système d'équations, VBA n'est vraiment pas fait pour ce genre de problèmes... à moins de ne posséder qu'un nombre limité d'équations et que tes solutions soient limités à des ensembles "simples" (entiers naturels par exemple).
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 14h22   #5
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
Je vais vous exposer mon problème depuis le début, cela risque d'être un peu long mais peut-être quelqu'un trouvera une solution.


Je travaille sur un projet où en fonction d'un lieu de chantier, de besoins en matériaux (type, quantités), je dois dire où aller en carrières/décharge/centrale béton, le type de camion (10t, 15t, 20t, 25t), le nombre de camions et quels sont les trajets les plus avantageux (simple fret?, double fret avec telle carrière ou telle autre, sachant également que le lieu d'une décharge peut correspondre au lieu de la carrière?, arriver à charge le matin?).

On connaît le lieu de chantier, les différents besoins en matériaux (type, quantités). Moi de là, j'arrive à connaître pour tous les matériaux, les carrières, décharges possibles, les prix (via une base de données que je suis en train de créer) et les distances jusqu'au chantier.

Maintenant ce que je n'arrive pas à imaginer c'est comment connaître le nombre de camions et leur types.


Je sais que: nb rotations par jour= nb heures travaillées par jour/durée de la rotation.
nb de camions=cadence journalière(imposée par le pelle, valeur connue)/(nb rotations x volume camion)
La durée de la rotation=f(volume camion, trajet); en effet, le temps de chargment dépend du volume camion et la durée de la rotation dépend de si on fait du simple fret, double fret.


Le problème, c'est que je dois gérer énormément de paramètres qui peuvent varier et qui sont tous dépendant les uns des autres.

Je m'étais donc tournée vers un calcul matriciel du type:

a1.T1+a2.T2+a3T3+a4.T4 inférieur ou égal à 8h
avec a, les nombres de tours

T1=la durée d'une rotation pour que j'arrive à charge sur le chantier le matin
donc a1=0 ou 1 car j'arrive chargé ou pas.

T2=la durée d'un tour pour du simple fret déblais
T3=la durée d'un tour pour du simple fret remblais
T4=la durée d'un tour pour du double fret déblais/remblais en prenant en compte que la décharge et la carrière peuvent être le même lieu ou pas.

Ces durées varient en fonction des distances et du volume du camion.
Par exemple T4=tchargement+tac+t1+t2+tca+t'; avec tac le temps de trajet, t1 le temps de déchargement décharge, t2 le temps de chargement carrière et t' le temps de déchargement chantier.

Mais on peut aussi avoir T4=tcharg+tac+t1+tcb+t2+tba+t' car la décharge et la carrière sont aussi parfois des lieux différents.
tcb la durée du trajet de la décharge à la carrière

les seuls temps qui varient sont les durées de trajet et le temps de chargement chantier tchargement=volume camion/rendement pelle.
Donc il faudrait que j'arrive à faire varier mes "a" (nb entier) et mes T en même temps.


a1.M1+a2.M2+a3.M3+a4.M4 sup ou égal à ta cadence journalière
avec M=nb camions x cubage du camion, sachant que sur une journée, on peut travailler avec différents types de camions.


Je suis face à un mur parce qu'il y tellement de cas!!!!
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 14h36   #6
Membre habitué
 
Inscription : novembre 2009
Messages : 134
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 134
Points : 106
Points : 106
Citation:
Donc il faudrait que j'arrive à faire varier mes "a" (nb entier) et mes T en même temps.
Tu peux faire des boucles imbriquées
Sinon pour résoudre un système d'équation à N inconnues il te faut absolument N équations.
Pour résoudre des systèmes avec beaucoup d'inconnues (et d'équations), il vaudrait mieux te tourner vers des logiciels de calcul matriciel, qui avec une simple ligne résoud ton système d'inconnues... Essaie Scilab (gratuit et qui communique avec excel).
HAL-9000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 17h21   #7
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
réflexion sur le sujet en pièce jointe.
Fichiers attachés
Type de fichier : xls explications.xls (27,0 Ko, 10 affichages)
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2010, 18h35   #8
Invité régulier
 
Inscription : mars 2010
Messages : 23
Détails du profil
Informations personnelles :
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : mars 2010
Messages : 23
Points : 9
Points : 9
sous excel tu peu faire du calcul matriciel.
Je n'est pas tous compris ton problème mais voici un exemple que tu met dans une cellule de tableau

=(SOMME(('donnée'!$B$2:$B$65536=A1)*(Donnée'!$D$2:$D$65536=a2)

cette formule fait la somme des lignes de l'onglet "donnée" qui à la valeur de A1 dans la colonne B et qui à la valeur de A2 dans la colonne D.

Pour valider la formule en temps que matrice lors de la saisie il faut valider la case avec la combinaison de touche suivante: Ctrl + Shift + Entrée.
44jeje44 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/03/2010, 07h55   #9
Membre Expert
 
Inscription : novembre 2006
Messages : 1 441
Détails du profil
Informations personnelles :
Âge : 48

Informations forums :
Inscription : novembre 2006
Messages : 1 441
Points : 1 384
Points : 1 384
il manque certaines données
1)le nombre de camion de chaque type dont tu dispose pour le déblaiement remblaiement.
si le début de ton calcul part systématiquement camion chargé le matin a 7:30 sur le chantier et le temps de travail est de 8h, l'éventuel temps pour recharger le camion pour le landemain est il compris dans ces 8h ou il se passe "hors cloche" et il ne faut pas en tenir compte, ou bien si tes chantiers durent plusieur jours, le camion s'arrete dans l'état ou il est au bout de 8h et le cycle repart le landemain dans cet état ?
Le but est il de connaitre la rotation sur une journée ou sur un chantier entier
je enlever tant et apporter tant, ça me prendra 8 jours
ou j'organise mes camion pour aujourd'hui, ce soir j'aurais enlevé tant at apporté tant
3) le temps de chargement défini par tes pelle est connu, mais est il variable? est ce qu'une décharge a toujour le meme temps de chargement ou dois tu adapter ce parametre au jour le jour
4) le but est il de faire ton chantier le plus vite possible et tu cherche une optimisation de tes rotation, ou le chantier te demande t'il tant de m3 et tu dois t'adapter
cad, une donnée de départ je dois enlever tant et reposer tant
ou aujourd'hui, je veut du remblais, demain je veux du déblais, un autre jour c'est les deux
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2010, 09h08   #10
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
1) on imposera par exemple 30 camions maxi par jour sur le chantier.
Je pars sur l'hypothèse que tous les camions rentrent à vide le soir.
Moi, je souhaite connaître la rotation sur une journée.

2) l'utilisateur aura la possiblité de choisir la pelle qu'il veut sur son chantier. A chaque pelle est associée un rendement théorique fixe auquel sera multiplié une efficience de pelle (tps réellement travaillé en une heure/60min) dépendant du type de chantier. En effet, si on a du terrassement en pleine masse, l'efficience sera de l'ordre de 0,8 alors que pour l'assainissement c'est plutôt 0,4.
Pour ce qui est des temps de chargement/ Déchargement en carrières et du temps de déchargement chantier, ce sera un nombre fixe qui proviendra d'une moyenne.

3) le but est d'avoir le prix total le plus faible possible.
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2010, 22h30   #11
Membre éprouvé
 
Benjamin Genèze
Inscription : avril 2008
Messages : 339
Détails du profil
Informations personnelles :
Nom : Benjamin Genèze

Informations forums :
Inscription : avril 2008
Messages : 339
Points : 404
Points : 404
il me semble que la solution à ton problème réside dans un calcul matriciel astucieux et l'implémentation du solveur sur la feuille de calcul.

Ca demande beaucoup d'analyses je t'invite à te rensegner sur le solveur.
Benjîle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2010, 19h13   #12
Membre Expert
 
Inscription : novembre 2006
Messages : 1 441
Détails du profil
Informations personnelles :
Âge : 48

Informations forums :
Inscription : novembre 2006
Messages : 1 441
Points : 1 384
Points : 1 384
Citation:
1) on imposera par exemple 30 camions maxi par jour sur le chantier.
moi, je sais comment optimiser un transport avec plusieurs volumes differends
par exemple pour les volumes 6.8.10.14 si tu veux faire 38m3 tu peux prendre 2*14 + 1*10, mais tu peux aussi utiliser
1*6 + 1*8 + 1*10 +1*14 m3
tout dépend des regles de priorité que tu compte utiliser
mobiliser 3 camions un certain temps (avec forcement un temps de latence entre les retour et le chargement suivant) ou débarrasser le chargement le plus vite possible.perso, j'aurais tendance a utiliser le deuxieme systeme. d'ou l'importance de connaitre le nombre de camion de chaque type.si tu as deux 14m3, il vaudra mieux alors utiliser 2*14 + 10
je ne pense pas que tu puisse faire ce type de calcul par équation ou formule, tu peux le faire par référence a une liste ou tu as déja fait les calculs.
ensuite, je pense qu'il faut partir sur le calcul d''un cycle entier. le systeme de double fret semble s'imposer, mais y a t'il des volumes differend entre ce qu'il y a a déblayer et la qté de remblais a amener.
supposons qu'il y ait plus de remblais que de déblais, amene t'on tout le remblais en double fret avant de finir d'évacuer ou bien quoi
dernier question. il manque des temps dans ton programme, est ce que tu compte ces temps en dehors des huit heures?
si tes camions ne sont pas conduit par des robots, les chauffeurs doivent bien faire une pause, ou peut etre qu'il ya un relais
le trajet "base/ chantier" et son retour. si les camions rentrent a vide le soir, il faut bien qu'ils chargent le matin
alsimbad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2010, 09h04   #13
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
mon programme doit étudier toutes les combinaisons possibles; en mariant les nombres de tours, les nombres de camions, les types de camions, les trajets, le choix des décharges, des carrières. il doit étudier toutes les possiblités

Ensuite il doit donner les optimums en coûts:
PT= Q(déblais1)xPU + Q(déblais 2)xPU + Q(remblais1)xPU + nb camions x nb de jours travaillés x prix camion

les PU dépendent du lieu de carrière, de décharge. En effet, parfois la carrière peut-être plus loin (donc plus de camions) mais les prix sont moins chers.

Les volumes déblais/remblais peuvent être identiques comme ils peuvent être totalement différents. On pourra choisir plusieurs types de déblais et plusieurs types de remblais.

Les 8H correspondent à 8h-12h00 13h00-17h00

Je pose l'hypothèse que mes camions rentrent à vide le soir.; donc cela signifie que certains auront à charger le matin.


Q inf ou égal à n1*x1*V1 + n2*x2*V2 + n3*x3*V3 + n4*x4*V4 inf à Q+6

Q correspond au cubage par jour de matériaux à mettre en place ou retirer.
n = nb de tours par camion
x = nb de camions
V = cubage possible de camions 6m3, 8m3, 10m3, 14m3; sachant qu'on peut les combiner entre eux aussi.

1: à 8h le camion charge à la carrière -> n1=0 ou 1
2: simple fret déblais
3: simple fret remblais
4: double fret.
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2010, 09h23   #14
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
Bonjour,


Quelqu'un m'a fourni un fichier très intéressant (valeur_cible3) qui trouve des combinaisons telle que n1*T1 + n2*T2 + n3*T3 + n4*T4 + n5*T5 inf ou égal à une valeur cible.

On peut choisir la valeur cible que l'on souhaite (temps), les T.
Le programme cherche toutes les combinaisons (pour le coup, ce sont les "n" tels que ce soit égal à la valeur cible).


Mais je me suis aperçue qu'il serait plus judicieux d'abord d'utiliser une condition sur les volumes.

Je m'intéresse tout d'abord uniquement aux déblais et je veux vérifier:

Q inf ou égal à: n21(D1)*x21(D1)*6 + n22(D1)*x22(D1)*8 + n23(D1)*x23(D1)*10 + n24(D1)*x24(D1)*14 + n41(D1)*x41(D1)*6 + n42(D1)*x42(D1)*8 + n43(D1)*x43(D1)*10 + n44(D1)*x44(D1)*14 inf à Q+6


n = nb de tours par camion
x = nb de camions
Q = quantité à évacuer par jour = 100 m3
D1 = déblais 1
6, 8, 10, 14 sont les volumes de camions; ils sont fixes dans mon tableau

n21(D1), x21(D1), n22(D1), x22(D1), n23(D1), x23(D1), n24(D1), x24(D1), n41(D1), x41(D1), n42(D1), x42(D1), n43(D1), x43(D1), n44(D1), x44(D1) sont des variables qui peuvent aller de 0 à 5.

Je souhaite avoir toutes les combinaisons de ces nombres pour vérifier les conditions: 100 inf ou égal à: FORMULE inf à 106.


Je joins le fichier avec le tableau des combinaisons. J'ai essayé de reprendre la macro de valeur_cible3 mais j'avoue que je sèche. Et je n'arrive pas à joindre la personne qui m'a fourni ce fichier.

Merci à ceux qui pourront me permettre d'avancer.
Fichiers attachés
Type de fichier : xls Valeur cible(3).xls (47,0 Ko, 2 affichages)
Type de fichier : xls essai2.xls (28,5 Ko, 1 affichages)
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/03/2010, 10h48   #15
Invité de passage
 
Emmanuelle PAULIN
Inscription : mars 2010
Messages : 40
Détails du profil
Informations personnelles :
Nom : Emmanuelle PAULIN

Informations forums :
Inscription : mars 2010
Messages : 40
Points : 0
Points : 0
je cherche à écrire une macro qui ferait varier mes "n" et "x" de 0 à 5 tel que:


100 ≤ n1*x1*6 + n2*x2*8 + n3*x3*10 + n4*x4*14 + n5*x5*6 + n6*x6*8 + n7*x7*10 + n8*x8*14 ≤ 106


je souhaite que sur mon tableau EXCEL, figurent les lignes des combinaisons qui vérifient ces 2 conditions.

les 6, 8, 10, 14 sont des valeurs fixes.
Emma95 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/04/2010, 14h20   #16
Membre éprouvé
 
Benjamin Genèze
Inscription : avril 2008
Messages : 339
Détails du profil
Informations personnelles :
Nom : Benjamin Genèze

Informations forums :
Inscription : avril 2008
Messages : 339
Points : 404
Points : 404
je ne comprends pas pourquoi tu n'utilises pas le solveur. C'est l'outil d'Excel destiné à ça. Un code VBA ne pourra faire que moins bien.

Eventuellement tu pourras exploiter vba pour qu'il te liste toutes les réponses trouvées par le solveur.
Benjîle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 19h45.


 
 
 
 
Partenaires

Hébergement Web