Programme "Intelligent"

Bonjour à tous,

Je vous expose mon problème un petit peu délicat, je travaille sur des formules chimiques, ici résumé par des situations

VOIR P2 → Reformulation des explications plus simplement avec exemple

C'est un tableau avec plus de 30 formules, 42 molécules différentes et 7 "maisons" avec 3 à 5 "chambre à chaque fois.... J'ai réussi à trouver quelque chose qui marche à tous les coups en tâtonnant et en faisant quelques calculs.

Cependant, si je rajoute une situation, elle peut tout faire basculer et c'est là où est le problème.

Je sais que c'est facile à dire comme ça mais j'aimerai un petit truc qui me permette de me dire : "Ok on peut le faire si tu met ça là, ça là et ça là", et s'il n'y a pas de solution, il me dit qu'il n'y en a pas...

Je suis une bille en programmation alors si quelqu'un peut me dire s'il est possible de créer ceci sur Excel, ce serait déjà pas mal

Merci pour votre future aide.

Cordialement

AllanHub

14forum3.xlsx (24.96 Ko)

Salut AllanHub,

J'ai regardé ton fichier et lu tes explications, et je ne comprends pas comment est rempli le tableau des noms.

Comment est fait le choix de mettre "Robert ou Nolwenn" plutot que "Robert ou Isabelle" dans la première cellule ?

Appelons-le le tableau B, et appelons le tableau des situations le tableau A :

Qu'est-ce qui détermine le remplissage du tableau A : une liste extérieure ou les prénoms enregistrés dans le tableau B ?

Qu'est-ce qui détermine le remplissage du tableau B : une liste extérieure ou les prénoms enregistrés dans le tableau A ?

EDIT : Obsolète suite changement d'exemple. On reprend avec nouvel exemple à partir d'ici : Nouvel exemple

Bonjour gaz0line,

Tout d'abord, merci d'avoir pris le temps de me lire.

Oui excuse-moi je suis dedans depuis un moment donc de ce fait, cela me paraissait évident.

Le tableau A, est un tableau donné, qui reste inchangé mis à part s'il y a des rajouts de situations par la suite, c'est donc une liste extérieure.

Le tableau B, est déterminé par les prénoms enregistrés dans le tableau A.

Pour répondre à ta première question, le choix de mettre Robert ou Nolwenn plutôt que Robert ou Isabelle c'est que pour la situation n°3, cela ne va pas fonctionné.

Je m'explique : si nous prenons la situation n°3, je vais cherché dans le tableau B : Isabelle dans la cellule C12 et Robert dans les celulles B12 et B13 car il apparait deux fois dans cette situation. Si dans la cellule B12 il y avait Robert ou Isabelle, alors à ce moment on irait chercher deux fois dans la même case et cela ne fonctionnerai pas pour mon étude.

En espérant t'avoir mieux renseigné, si tu as d'autres questions je suis là.

Merci.

AllanHub

Merci pour ta réponse, nouvelles questions :

Pourquoi il y a certaines cellules avec deux noms et d'autres avec 1 seul nom ?

Peux-tu m'expliquer exactement comment tu remplies ton tableau B ?

En effet les macro ne sont rien d'autre qu'une suite logique d'actions, et là je ne comprends pas la logique de construction et de remplissage du tableau B :

A partir de ton exemple, est-ce que le fait qu'il y a 3 lignes et 5 case par ligne sur le tableau B est lié au nombre de situations et de chambres du tableau A ? Ou est-ce que ta représentation physique du tableau B n'a aucune importance ?

je suis désolée j'ai du mal à capter le truc ^^

EDIT : Obsolète suite changement d'exemple. On reprend avec nouvel exemple à partir d'ici : Nouvel exemple

Pas de soucis je suis là pour répondre

Car je les ait arrangé comme ça mais en réalité mon tableau à un nombre de cases restreint ce qui m'oblige à faire commuter des noms entre eux sinon si chaque prénom avait sa place ça serait trop simple

Et bien je l'ai rempli en tâtonnant et en vérifiant si chaque situation fonctionnait à chaque fois... C'était long sur 30 formules, car quand tu changes quelque chose tu repars du début pour vérifier si ce que tu as changé s'arrange bien avec les formules que tu avais déjà vérifiées...

Non, en fait c'est un tableau qui est physique (en métal) et qui possède 41 cases.

Pas de soucis, je comprend j'ai beaucoup de mal à l'expliquer car le domaine dans le quel je travaille est très précis et ne ressemble à rien d'autre, c'est pour cette raison que j'ai remplacé les molécules par des prénoms et que c'est un sujet confidentiel

Merci pour l'intérêt que tu portes à mon sujet Gaz0line !

Cordialement

AllanHub

Oh pas de soucis, je préfère largement un exemple plus simple avec des noms et des situations que des formules et des éléments chimiques

Je t'en prie, je vais y réfléchir, et je reviens vers toi si j'ai d'autres questions

C'est pour ça j'ai préférer rendre ça un petit peu moins casse tête

Dac, pas de soucis, à très vite !

Merci encore

AllanHub

EDIT : Obsolète suite changement d'exemple. On reprend avec nouvel exemple à partir d'ici : Nouvel exemple

Salut AllanHub, je reviens vers toi parce que j'ai besoin d'info ^^

Vraiment je ne comprends pas ton tableau B :

Dans ton exemple tu dis "je ne peux pas mettre Julien et Norbert dans la même case de B, parce qu'ils sont tous les deux dans la situation 4 de A"

Mais pourtant tu mets Jean et Alain dans une même case (en C13), alors qu'ils sont tous les deux dans la 1ère situation de A, pareil pour Jean et Eude (E13 de B et Situation 1).

ça me parait vraiment obscur...

Peux-tu m'énumérer les règles implémentation du tableau B ?

En vrac tout mon questionnement :

Est-ce que le tableau B (donc les 11 cases de ton exemple) concerne l'ensemble des noms du tableau ou est-ce que une ligne du tableau B concerne seulement une situation, ou est-ce que toutes les cases du Tableau B ne concernent qu'une situation ?

(donc est-ce que dans ton exemple, ton tableau B concerne uniquement le tri des noms de la situation 4 et pas les autres ?)

Enfin, qu'est-ce qui détermine le fait que (par exemple) Jean apparaisse 3 fois dans le tableau B , le fait qu'il apparait 3 fois sur la ligne 4 ? Est-ce que cela veut dire que pour chaque situation, il faut ranger autant de noms dans ton tableau B qu'il y en a dans la situation? Mais dans ce cas pourquoi il y aurait 18 noms dans ton tableau B alors qu'il y n'y en a que 13 dans ta situation 4 ?

Désolée pour ce flot de questions...

Dans l'attente, j'ai pour l'instant construit une petite macro qui extrait tous les noms de chaque situation, sans doublon (en PJ).

13allanhub.xlsm (25.24 Ko)

Re gazoline,

Ah oui désolé je me suis trompé, ce que j'ai dis est vrai, je me suis trompé pour la situation1, j'ai fais ça un peu vite à vrai dire.

Les règles que j'ai annoncé sont bien les bonnes sur le message

Le tableau B :

Concerne tous les noms du tableau A

Ce qui détermine que Jean apparaisse 3 fois par exemple c'est que cela est nécessaire pour le bon fonctionnement du tableau par exemple : il apparaît trois fois dans une même situation et doit donc être présent dans trois cases pour n'utiliser qu'une case par "chambre" à chaque fois.

J'ai dû faire des erreurs en effet dans le tableau que j'ai joins, je le rectifie ce soir car ça doit t'embrouiller et je m'en excuse très sincèrement

T'inquiète c'est pas grave, c'est juste que l'exemple que tu fournis, je le décortique dans tous les sens pour essayer de comprendre et du coup il est contradictoire avec ce que je pensais comprendre ^^

Dans ton exemple Robert apparait dans 10 chambres, est-ce que cela veut dire qu'il doit apparaitre 10 fois dans le tableau B ?

EDIT : Obsolète suite changement d'exemple. On reprend avec nouvel exemple à partir d'ici : Nouvel exemple

Du coup j'ai revu ma macro pour faire une liste des noms qui apparaissent dans A, avec le nombre de fois où ils apparaissent (pas encore enlevé les doublons!) . A suivre, dans l'attente de ton nouvel exemple

7allanhub.xlsm (28.41 Ko)

Prends ton temps pour refaire ton exemple, hein, y a aucune urgence de mon coté, comme je suis un peu prise par le boulot cette semaine

Bonjour Gaz0line

Du coup comme j'étais dedans je l'ai refait ce matin, je vais ré-énumérer les règles que doit respecter le tableau B comme ça tout sera clair pour repartir sur de bonnes bases.

Tu trouveras en pièce jointe le tableau A des situations et le tableau B (deux onglets différents dans le fichier)

Les règles :

- Pour chaque situation il faut que : chaque prénom apparaissant dans une chambre puisse être relié à une case de tableau (voir exemple que j'ai fait pour la première situation) → Quand on passe à la situation n°2 les croix vertes s'effacent et nous repartons sur le même tableau vierge.

- Une case est représenté en gras. Lorsque la case est découpé en deux par des pointillés : c'est une case qui peut commuter entre deux prénom comme l'on ne s'en sert que d'un dans une et même situation. → Il ne peut donc y avoir qu'une seule croix dans une case en gras

- La partie grise n'est pas utilisable

- Les prénoms sur fond rouge dans les différentes situations (tableau A) : Nina, Ninon, Nine, Nino ne doivent pas être présents dans le tableau B

- Dans le tableau B, les prénoms entourés par groupe en rouge aiment être à côté car ils se ressemblent

- Un même prénom aime être à coté de lui même quand il apparait plusieurs fois dans le tableau B

Voilà c'est à peu près tout, j'espère qu'avec mon exemple ce sera plus clair pour toi ! Et encore merci pour ta patience et ta gentillesse. Si tu as d'autres questions, n'hésite pas

AllanHub

9forum3.xlsx (24.96 Ko)

Merci Allan, j'ai jeté un oeil à ce nouvel exemple, c'est effectivement plus clair !

Donc si j'ai bien compris :

  • Le tableau B référence les noms présents dans TOUT le tableau A;
  • Chaque test du tableau B porte sur une seule situation;
  • Les croix vertes pointent les noms présents dans UNE situation;
  • Il ne peut pas y avoir deux croix dans un même compartiment (ce que j'appelle compartiment = cases en gras avec 1 ou 2 cellules);
  • > du coup, il ne faut pas mettre deux noms présents dans une même situation dans un même compartiment;
  • Le nombre de fois où un nom apparaît dans B correspond au nombre de fois où il apparaît dans la situation testée de A;
  • Tu veux pouvoir tester chaque situation indépendamment les unes des autres en checkant tous les noms de A puis en mettant des croix pour checker les noms présents dans la situation testée;

j'ai bon ?

Re Gaz0line !

Tout bon ! C'est exactement ça ! Ca déjà ce serait du très très beau boulot et même de la magie pour moi

Et si le programme peut me remplir le tableau tout seul (car cela se peut qu'il y ait des rajouts de situations ou de prénom et donc des incompatibilités avec certaines situations déjà vérifiées qui peuvent évidemment mener à des échecs total du tableau = pas de solutions possible si nous essayons de créer un tableau avec tous ces noms et toutes ces situations)

Mais c'est peut-être du trop haut niveau pour de la programmation Excel...

Etant donné que je commence à peine le VBA je ne connais pas encore ses limites...

Merci Gaz0 d'avoir eu le temps de regarder ça ce midi

Cordialement,

AllanHub

Re-salut Allan !

Pour l'instant voilà où j'en suis :

  • ma macro établit une liste de noms du tableau A entier , sans les noms en rouge (ninon, etc...), en ignorant les cases vides, et supprime les doublons;
  • elle établie une liste de noms de la première situation, en gardant les doublons (puisqu'il faut autant de noms dans le tableau B qu'il y en a dans la situation) et les trie par ordre alphabétique.
  • enfin, elle établit la liste des agents restants, elle prend la liste du tableau A et retire les agents de la situation. Cette 3ème liste me servira à remplir le tableau B en évitant d'avoir 2 agents de la situation dans un même compartiment.

Il me reste à remplir le tableau B avec ces listes de noms et selon les critères de compartiments, de boucler sur toutes les situations, et de mettre une alerte si le remplissage du tableau est en échec pour cause de critères non respectés ( c'est bien le but final ?).

Si ton tableau s'agrandit en lignes comme en colonnes, la macro fonctionnera quand même

Je remplacerai les croix par une coloration de cellules, si ça ne te gêne pas, ce sera beaucoup plus simple que des croix.

Avant d'aller plus loin, Question :

Tes cellules grises (celles de ton tableau B, pas celles de ton cerveau ), elles n'augmenteront pas ? Le tableau B fera toujours cette taille exactement ?

La représentation physique de ce tableau B est importante ou bien je peux remanier comme je veux (par exemple en mettant les cellules grises ailleurs, ou en bougeant les cellules de place, comme sur mon fichier joint, onglet Remaniement)?

EDIT : Modif pièce jointe

13allanhub3.xlsm (50.77 Ko)

Salut AllanHub,

J'ai terminé ton fichier de situations., finalement sans remanier le tableau B.

Le fichier créé la liste de tous les noms du tableau A en ignorant les cellules rouges & les cellules grises, et sans doublons.

Ensuite pour chaque ligne de ton tableau de situation :

  • il créé la liste des noms présents dans la situation,
  • il crée la liste des noms restants du tableau A, déduction faite des noms de la situation
  • il place chaque nom de la situation sur les lignes 1, 2 et 4 du tableau B et les colore en orange (anciennement croix verte)
  • il bouche ensuite les trous dans le tableau B à l'aide de la liste restante des noms du tableau A.

Ensuite il passe à la situation suivante avec un RAZ des données.

Après chaque situation testée, s'il n'y a pas eu d'erreur, un message te donne le n° de la situation testée et t'indique "OK"

Côté gestion d'erreurs :

- si le nombre de noms de la situation testée est supérieur au nombre de cases uniques (une case avec 2 compartiments est considérée comme une case unique), message d'alerte, qui t'informe du problème, te donne le numéro de la situation et te demande si tu veux tout arrêter ou continuer à tester les autres situations.

- si le nombre total de noms (Situation + noms restants du tableau A) est supérieur au nombre de cellules (une case avec 2 compartiments est considérée comme 2 cellules), message d'alerte, qui t'informe du problème, te donne le numéro de la situation et te demande si tu veux tout arrêter ou continuer à tester les autres situations.

En espérant que ça réponde à ton besoin

16allanhub3.xlsm (53.77 Ko)

Salut gaz0line !

Désolé j'étais bien malade et je n'ai pas pu répondre à ton précédent message !

Merci pour ce que tu as fais c'est super mais je comprends pas trop car le tableau B doit être définitif et doit fonctionner pour toutes les situations (il devrait y avoir remaniement du tableau B (donc nouveau remplissage) si une situation ne fonctionne pas sur le tableau et donc le nouveau remplissage devrait satisfaire aussi les autres situations.

Là en fait le tabeau change complètement à presque chaque situation ? Hors il se doit d'être définitif pour pouvoir mettre des étiquettes par exemple avec les prénoms qui seront casi-définitifs (si d'autres situations se rajoutent et qu'il y a remaniement du tableau oui là alors on devra changer les étiquettes mais pas un soucis)

Ai-je été assez explicite dans ce que j'ai écris ?

Merci beaucoup en tous les cas d'avoir bosser à fond dessus !!

Pour répondre à tes questions de l'avant dernier message :

  • Ajout de cases grises si d'autres situations ont des cases grises ce qui arrivera avec forte probabilité.
  • Si le tableau B peut garder sa forme physique c'est un gros plus

A bientôt

AllanHub

Bonjour,

J'ai regardé, lu et relu et je t'avoue n'avoir rien compris.

Je suis même étonné que gazoline ait réussi à en sortir des règles non dites.

Quelques interrogations en vrac :

1) tu n'expliques pas vraiment les règles de remplissages de B, pourrais-tu détailler ?

2) tous les prénoms d'une ligne de A doivent donc se retrouver dans B ? et si paul est 4 fois sur une ligne A on doit le retrouver 4 fois dans B ? Si oui toutes les itérations du même prénom doivent se trouver sur la même ligne ?

3) cette notion de maison et chambre ne sert absolument pas pour remplir B ? C'est juste pour ta cuisine interne ?

4) c'est un tableau qui est physique (en métal) et qui possède 41 cases. Pour B ? J'en compte 15+5 doubles+15 doubles soit 35 (?)

5) ALEXANDRE MELISSA MICKA Ils aiment être côte à côte dans ce tableau Ils sortent d'où ? absents dans A

5a) qu'est-ce qui te fait dire qu'ils se ressemblent ?

5b) pourquoi ne pas dire la même chose de SEBASTIEN et LAURENCE ?

5c) à quoi ça nous sert de dire qu'ils se ressemblent ?

5d) qu'est-ce qui fait qu'un prénom doive se trouver proche d'un autre dans B ? Voir 1) : aucune règle de remplissage

6a) pourquoi le mettre plus en ligne 1, 2-3 ou 4-5, quelle est la règle ?

6b) la ligne 1 a-t-elle un rôle spécial ? Pourquoi est-elle simple et les autre doubles ?

7) le fait d'en mettre un plus dans une cellule double qu'une simple est juste pour pouvoir satisfaire toutes les situations ou il y a d'autres règles ?

8 ) on fait totalement abstraction des prénoms sur fond rouge comme s'ils n'étaient pas là. D'accord ?

Tout cela est bien obscur pour un profane. Il ne faut pas hésiter à fournir le cheminement logique, pas à pas si besoin, du remplissage de ce tableau B. Je suppose qu'au fur et à mesure de l'analyse des situations tu déplaces les prénoms de case mais rien là dessus.

eric

re ! effectivement ça redevient obscur pour moi aussi ^^

Il faudrait idéalement que tu nous décrives pas à pas concrètement comment tu remplis le tableau B, comme ça :

Je prend la 1ère situation du tableau A

Le 1er prénom est Jacques, je le place en cellule A1 du tableau B

Le 2ème prénom est Sacha, je le place en cellule B1 du tableau B

Le 3ème prénom est Jean, je le place en cellule C1 du tableau B

Le 4ème prénom est une case grise , je ???

Le 5ème prénom est Jacques, je ???

Le 6ème prénom est Sacha, je ???

Le 7ème prénom est une case grise , je ???

Le 8ème prénom est Henri, je le place en cellule ?? du tableau B

Le 9ème prénom est Sacha, je ???

Le 10ème prénom est une case grise, je ???

Le 11ème prénom est Sasha, je ???

Le 12ème prénom est Jacques, je ???

Le 13ème prénom est Henri, je ???

Le 14ème prénom est Sasha, je ???

Le 15ème prénom est une case grise, je ???

Le 16ème prénom est Paul, je ???

Le 17ème prénom est Sasha, je ???

Le 18ème prénom est une case grise , je ???

Le 19ème prénom est Paul, je ???

Le 20ème prénom est Jean, je ???

Le 21ème prénom est Sasha, je ???

Le 22ème prénom est Clément, je ???

Le 23ème prénom est une case grise, je ???

ENSUITE JE PASSE A LA 2ème situation :

Je n'efface pas mon tableau B

Le 1er prénom est Jacques, je ???

Le 2ème prénom est Sacha, je ???

Le 3ème prénom est Jean, je ???

Le 4ème prénom est une case grise , je ???

Le 5ème prénom est Jacques, je ???

Le 6ème prénom est Sacha, je ???

Le 7ème prénom est une case grise , je ???

Le 8ème prénom est Henri, je ???

Le 9ème prénom est Sacha, je ???

Le 10ème prénom est une case grise, je ???

Le 11ème prénom est Sasha, je ???

Le 12ème prénom est Jacques, je ???

Le 13ème prénom est Henri, je ???

Le 14ème prénom est Sasha, je ???

Le 15ème prénom est une case grise, je ???

Le 16ème prénom est Paul, je ???

Le 17ème prénom est Sasha, je ???

Le 18ème prénom est une case grise , je ???

Le 19ème prénom est Paul, je ???

Le 20ème prénom est Jean, je ???

Le 21ème prénom est Sasha, je ???

Le 22ème prénom est Clément, je ???

Le 23ème prénom est une case grise, je ???

ENSUITE JE PASSE A LA 3ème situation :

Je n'efface pas mon tableau B

Le 1er prénom est René, je le place en cellule ?? du tableau B

Le 2ème prénom est Sacha, je ???

Le 3ème prénom est Pierre, je ???

... etc ...

QU'on puisse comprendre quand est-ce que tu mets deux fois un même prénom, quand est-ce que tu mets une case grise, etc...

De plus comme dit Eric tu dis que dans ton tableau B tu as 45 cases, mais tu proposes d'emblée un tableau qui as 10 cases grisées, si c'est un paramètre variable il faut expliquer en quoi.

Rechercher des sujets similaires à "programme intelligent"