Code Vba pour l'optimisation de câble

zean-Missel

XLDnaute Nouveau
Bonjour à tous et à toutes,

A partir de "x" couples (dans notre exemple 21 couples)
je souhaiterai :
Assembler les couples entre eux pour :
1/ obtenir des listes de 5 lettres (non répétées) : Chaque ligne de 5 lettres utilise 10 couples
2/ utiliser tout les couples en ayant le moins de ligne possible
3/ les couples qui resteront seront listés à la fin

Qui souhaite m'aidez SVP ? n’hésitez pas à me dire si c'est pas très compréhensible
Voir fichier
 

Pièces jointes

  • Classeur1.xlsm
    17.5 KB · Affichages: 55

Noel Bedard

XLDnaute Occasionnel
Bonsoir zean-Missel et le Forum,

Ok, j'ai bidouillé une autre version, cette fois vous pouvez choisir jusqu'à 99 élélements

J'ai pensé qu'il était beaucoup mieux d'entrer le nombre d'élément que les éléments eux mêmes.

Moins de chance de faire des erreurs et de choisir 2 ou 3 fois le même numéro.

Uniquement des chiffres de 1 à 99 seront interprétés par le code.

Pas eu le temps de tester, à vous de jouer avec.

J'ai ajouté une autre version, puisqu'il semble que vous n'avez pas besoin des paires au dessus des groupes.
Tous se sauvegarde sur la même feuille. (Fichier Exemple #12)


Bye
Noël
 

Pièces jointes

  • Combine_Exemple1 12.xlsm
    98.9 KB · Affichages: 22
  • Combine_Exemple1 11.xlsm
    113.7 KB · Affichages: 30
Dernière édition:

zean-Missel

XLDnaute Nouveau
Bonjour Le fil et le forum, Bonjour Noël,
Le version expl 11 me parait mieux car j'ai la liste (resultat) alors que pas sur la version expl 12.
Je vous remercie encore pour vos efforts.
Comment passer vous des paires aux lignes svp ?
Peut on faire une petite routine en plus pour rechercher les paires contenues dans les lignes "liste resultat?
Je vais faire des essais mais si toutes les paires sont prises ça m'a l'air propre. ;)
Merci encore, justes ces 2 petites questions et je pourrais vous laisser tranquille. :rolleyes:
Bye
Jean-Mi
 

Noel Bedard

XLDnaute Occasionnel
Bonsoir zean-Missel et le Forum,

Je n'aime vraiment pas laisser cette discussion sans résultat, je n'arrive pas a comprendre ce que vous voulez exactement, j'ai beau regarder les exemples que vous fournissez, il y a toujours des contradictions.

Ce que je fais:
Prenons comme exemple 39 éléments ce qui me donne 741 combinaisons.
Je choisi 8 paires de connexions donc 8 * 7 = 56 / 2 = 28 paires.
Je crée la liste des paires, les 741 paires.
Je prends les 28 premières paires elles sont pour la carte #1.
Je continue ainsi pour chaque groupe jusqu'à 26 cartes.
Il me reste 13 paires, donc bonnes pour une autre carte de 10 paires 5 x 4 / 2 = 10
Il me reste 3 paires.

Après cela que voulez-vous exactement?
Qu'est-ce que je fais?
C'est quoi le nom de ces cartes, juste pour avoir une idée?
Pour l'instant dans la cellule bleue j'ai placé les 8 premières paires de chaque carte. Lesquelles sont transcrites sur la page suivantes.

Vous remarquerez que les paires sont en ordre dans cette exemple, parce que j'ai enlevé le tri aléatoire que j'utilisais dans les versions précédentes, ce qui évitait d'avoir toujours les mêmes combinaisons.

Merci, bonne soirée,
Noel
 

Pièces jointes

  • Exemple_1.xlsm
    126.6 KB · Affichages: 27
Dernière édition:

zean-Missel

XLDnaute Nouveau
Bonjour Noël et le forum,
Heureux de vous relire.
Merci de votre intérêt pour mon problème.
Je croyais sincèrement que tout était compris.Je Vous demande de bien vouloir m'excuser si il restait des incompréhensions.
Je cites :

Prenons comme exemple 39 éléments ce qui me donne 741 combinaisons. ok
Je choisi 8 paires de connexions donc 8 * 7 = 56 / 2 = 28 paires. Ce n'est pas "8 paires " mais 8 fils
Je crée la liste des paires, les 741 paires.ok
Je prends les 28 premières paires elles sont pour la carte #1. Non, je ne pense pas, c'est là que ça bug
il faudrait Choisir dans le tableau des 741 paires (voir fichier)

Choisir 7 paires aux hasard (8 connexions - 1) qui ont 1 élément en commun
assembler ces 7 paires = 8 éléments (bleu)
re-dissocier ces 6 éléments en paires (jaunes)
supprimer ces paires de la liste (tableau)

Je continue ainsi pour chaque groupe jusqu'à 26 cartes. ok 26,46
Il me reste 13 paires ok, donc bonnes pour une autre carte de 10 paires 5 x 4 / 2 = 10 Pourquoi 10 ?
on est parti pour des cartes à 8 entrées, on assembles les 13 paires et au pires on à 2 cartes suplémentaires
au mieux 1 seule .


C'est quoi le nom de ces cartes, juste pour avoir une idée? Ce sont des cartes d'entrées/sorties avec des optocoupleurs (connais pas le nom ça ressembles à des modules "sie...ens" mais il y as pas de nom dessus juste un code en interne je peux pas en dire plus )
Aujourd'hui les paires sont connectées paires par paires ( ça fait beaucoup de câbles à tirer ) (beaucoup d'erreur de câblage)
L'objectif c'est qu'avec un câble d’entrées de 39 fils (exemple) je peux gérer environ 741 paires ,en passant par l'interface (cartes ou modules ...)
Il y a beaucoup de combinaison , il faut les écrire avant de les câbler mais on y arrive pas ! d'ou l 'idée de faire un code VBA

Avant de continuer n'hésitez pas à revenir vers moi si il y a encore des ambiguïtés.

Bye
Jean-Mi
 

Pièces jointes

  • Exemple_1.xlsm
    104.8 KB · Affichages: 28

Noel Bedard

XLDnaute Occasionnel
Bonjour zean-Missel et le Forum,

Voici, je me suis amusé un peu sur un autre exemple, un groupe de boucle imbriquées, un peu lent, il faut que je vérifie, le tri n'est pas assez performant.
Du moins c'est juste pour avoir une idée, avec un grand nombre de paires soit patient.
Après une première passe un message va apparaître et il continue avec une connexion en moins et ainsi de suite.


Bonne journée.
Noel
 

Pièces jointes

  • Exemple_7.xlsm
    141.1 KB · Affichages: 33
Dernière édition:

zean-Missel

XLDnaute Nouveau
Bonjour Noël et le Forum,

La première passe est nickel,faut pas la toucher pour les autres ça fait beaucoup trop de cartes.
Pour la deuxième passe ne pourrait on pas ajouté une condition du style "si une paire à déjà été prise on fait quand même"
Puis pour la troisième passe "si deux paires on déjà été prise on fait quand même"
Puis pour la 4eme passe "si 3 paires on déjà été prise on fait quand même"
etc..
Qu'en pensez vous ?

Bye.
Jean- Mi
 

Noel Bedard

XLDnaute Occasionnel
Bonjour à tous

Comme vous dites c'est possible mais nous fausserons le résultat car les paires seront utilisées 2, 3, 4,... fois
A quoi bon faire un tri dans ce cas.

Mieux vaut afficher uniquement la première passe, je ne sais pas, s'il n'y a pas d'importance pour les autres phases pourquoi s'attarder sur la première.

Je continue de jouer avec ça, pour obtenir plus de résultats et plus rapide aussi, mes connaissances sont limitées. Je commence à jouer avec le dictionary. (bon pour mon apprentissage, mais pas facile)

Bonne journée
Noel
 

Noel Bedard

XLDnaute Occasionnel
Bonjour à tous

Pour avoir moins de résiduelle, il faut être plus précis dans le nombre de paires. Trouver une formule qui donnera le maximum.

Voici un exemple qui affiche seulement le groupe demandé.
 

Pièces jointes

  • Exemple_12.xlsm
    35.8 KB · Affichages: 22
Dernière édition:

Noel Bedard

XLDnaute Occasionnel
Bonjour zean-Missel et à tous.

Voici un autre exemple.

J'aimerais si possible, que quelqu'un m'aide sur ce projet, car je n'ai vraiment pas les connaissances pour aller plus loin.

1. Au début on informe la feuille du nombre d'éléments, prenons 31 comme exemple.
2. Avec ses 31 éléments nous formons des paires de 2, soit 465 paires. combin(31;2)
3. Après cela nous voulons former des groupes, formons des groupes de 6 éléments qui sont déjà en paires dans les 465.
4. Chacun de ces groupes aura seulement 6 éléments qui seront sélectionnés dans les 465 paires ou chacun des 6 éléments se trouve
encore là il faut que dans chaque groupe que l'on retrouve les combinaisons possibles des 6 éléments selon la formule de Zean
pour mon exemple (6 x 5)/2=15. Ce sont 15 paires que je retire des 465 paires pour former mon premier groupe.
5. Il faut former le plus de groupe possible jusqu'à épuisement des 465 paires.

Ouvrez mon fichier pour avoir une meilleur idée. J'ai donné beaucoup d'heures pour trouver quelque chose, mais je n'y arrive pas.
Je n'aime vraiment pas, j'en suis hanté, il faut que je trouve la formule, c'est certain qu'il doit y avoir une.

Merci beaucoup
Noel
 

Pièces jointes

  • Exemple_17.xlsm
    116.1 KB · Affichages: 27

Dranreb

XLDnaute Barbatruc
@Noel Bedard, bonjour.
J'ai suivi attentivement vos explications (celles de zean-Missel je n'y ai jamais rien compris), et j'en suis là.
Le problème, je trouve, c'est qu'on épuise assez rapidement la liste des associations de fils qui n'ont jamais été produits, en les pompant dans les associations restantes non produites, parce que les numéros de fils déjà associés y reviennent trop vite.
Peut être vaudrait il mieux les prendre d'un ListeAléat de numéros de Fils qui n'ont pas encore été associés, et recommencer avec un nouveau ListeAléat de numéros de tous les fils lorsqu'il est pratiquement épuisé.
 

Pièces jointes

  • ListeAléatNoelBedard.xlsm
    37.7 KB · Affichages: 30

Discussions similaires

Réponses
3
Affichages
350