Créer un tableau de permutation avec des valeurs 0/1
Bonjour à tous,
Je cherche à faire écrire à Excel un tableau des permutations possibles en fonction d'un état (ouvert / fermé), d'un nombre de ligne et d'un "taux de charge" (variable) à respecter dans chaque permutation.
Pour éclaircir ma problématique voici un exemple plus parlant :
Imaginons un montage électrique équipés de 4 ampoules similaires de 50W (nommées L1, L2, L3 et L4). On dispose d'une alimentation 100W donc seulement 50% peuvent être allumées simultanément sinon l'installation disjoncte. Le tableau des permutations possibles est donc le suivant :
L1 | 1 | 1 | 1 | 0 | 0 | 0 |
L2 | 1 | 0 | 0 | 1 | 1 | 0 |
L3 | 0 | 1 | 0 | 1 | 0 | 1 |
L4 | 0 | 0 | 1 | 0 | 1 | 1 |
(j'espère ne pas en avoir oublié
Je cherche donc un moyen de reproduire ce tableau grâce à Excel ou VBA, mais avec les contraintes d'entrées suivantes :
- Le nombre de ligne importé est variable (généralement de 2 à 10 ampoules)
- L'alimentation est différente pour chaque montage, le taux de charge sera donc variable (50%,76,12.528%...)cependant le nombre d'ampoule allumées simultanément est tronqué à l'entier inférieur (4 ampoules de 50W et une alim de 125 allume 2 ampoule et pas 2.5)
- A terme les puissance des ampoules seront différentes les unes des autres ce qui peut impliquer un nombre différents d'ampoules allumées tant que la somme des puissances reste inférieure à la capacité de l'alimentation
En fichiers joints un exemple des données d'entrée et des solutions manuelles.
Merci par avance pour votre aide.
PS: Je débute en VBA.
Bonjour et
Ton tableau me fait un peu penser à ça:
C'est un fichier manuel que je viens rapidement de faire, il peut facilement être fait par macro, en clair je mets toutes les combinaisons possibles (même celle où aucune ampoule n'est allumée), et je regarde ensuite en fonction des puissances la consommation totale, il ne reste ensuite qu'à faire un filtre sur le total, et le nombre d'ampoules allumées simultanément, tu peux ainsi retrouver ton tableau de départ.
On peut aisément imaginer quelque chose comme ça, tu renseignes tes données de base au départ, tu cliques, et ça t'affiche uniquement les résultats où 2 ampoules sont allumées pour une puissance inférieure ou égale à celle cherchée
Qu'en penses-tu?
Bonjour Ausecour et merci pour l’accueil,
Super ce raisonnement ! A première vue il va bien s'appliquer à ma problématique
Et si je veux faire la même chose mais que le nombre d'ampoules installées est de 5, il faudrait donc créer une nouvelle feuille avec un tableau comprenant 5 colonnes pour les ampoules L1 à L5 (ainsi que des combinaisons qui vont bien) ? Une feuille pour chaque configuration en fait.
Je n'ai pas compris ce qui peut être facilement fait par macro : l'écriture du tableau de combinaison (TC) ou la détermination du nombre d'ampoule basé sur un TC saisie manuellement ?
En tout cas merci pour ce retour, la méthode proposée est super intéressante.
Re,
de rien
Super si tu trouves l'idée bonne, c'est tout ce dont j'avais besoin pour commencer le code, il est désormais finis:
Tu mets autant d'ampoules que tu veux avec leurs puissances, tu fixes une puissance max à ne pas dépasser ainsi qu'un nombre d'ampoules que tu veux mettre, et tu cliques sur le bouton, le résultat sortira de lui-même, si tu veux, le tableau de résultat peut te faire un récapitulatif des puissances, de toute façon c'est déjà calculé, il faut juste sortir la donnée si besoin
Le nombre d'ampoules que tu veux mettre peut être totalement variable, tu mêmes mettre 30 ampoules si tu le souhaites, attention toutefois, comme le nombre de possibilités qui sont regardées sont en puissance de 2, en clair pour 20 ampoules, le code aura déjà 1048576 possibilités à analyser avec cette méthode (le nombre de lignes que contient une feuille Excel), elle n'est pas optimale et il existe peut-être des façons plus rapide de faire ça mais ça dépasse ce que je sais faire
(Chez moi ça marche en quelques secondes pour 19 ampoules, au-delà, ça me dit que la mémoire est insuffisante).
Wow ! Ton efficacité et celle du code me laisse bouche bée
Je t'en suis très reconnaissant, merci
Bonne journée et à bientôt !
De rien!
à bientôt