Microsoft 365 Correspondance entre plusieurs colonnes avec des contraintes

Blick

XLDnaute Nouveau
Bonjour,

J'aurais besoin d'aide pour un calcul avec un peu de gymnastique mentale, ainsi je ne sais pas comment m'y prendre pour retranscrire ça sur Excel.

Le but de mon calcul est d'afficher un 0 dans la colonne appelé numéro de début si dans la colonne numéro machine, le numéro de la machine n'est jamais apparu au dessus sinon mettre un 1.

Le problème est que si dans la colonne numéro de commande, un numéro de commande a déjà été noté, il faut aussi mettre un 1 dans la colonne numéro de début.

Ainsi si un numéro de commande utilise plusieurs machines, il est possible qu'une machine ne soit jamais mise à 0.

Merci pour votre aide
 

Pièces jointes

  • Gymnastique cérébrale.xlsx
    14.2 KB · Affichages: 4
Solution
La subtilité m'avait échappée. :)
et c'est plus complexe.
Un nouvel essai en PJ avec en B6 :
VB:
=SI(OU(ET(ET(NB.SI(C$5:C5;C6)>0;NB.SI($D$4:D6;D5)<=1);NON(ET(NB.SI(C$5:C5;C6)=0;NB.SI($D$4:D6;D5)>=2)));ET(NON(ET(NB.SI(C$5:C5;C6)>0;NB.SI($D$4:D6;D5)<=1));ET(NB.SI(C$5:C5;C6)=0;NB.SI($D$4:D6;D5)>=2)))=VRAI;1;0)
J'ai laissé les formules de "réflexion" en dessous pour comprendre le cheminement.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Blick,
Pas tout compris.
Dans votre fichier, si on doit mettre 0 si la machine n'est pas présente avant, alors je suis d'accord avec le 0 dans B20 mais pas dans B23 puisque c'est la première fois que la machine N°3 est apparue, il devrait donc il y avoir 0 en B23 et 1 en B24.
Un essai en PJ avec en B6 :
VB:
=SI(NB.SI($C$5:C5;Tableau2[[#Cette ligne];[Numéro Machine ]])=0;0;1)
qui donne 0 en B9 mais 1 en B10 puisque la machine N°3 est déjà apparue.
 

Pièces jointes

  • Gymnastique cérébrale.xlsx
    13.1 KB · Affichages: 2

Blick

XLDnaute Nouveau
Merci pour votre réponse enfaite le but de la formule est de mettre toutes les premières apparitions de machines à 0 sauf si le numéro de commande est déjà apparu.

C'est pour ça que B23 doit comporter un 1 car il y a déjà une commande 7 au dessus (la commande prend la priorité sur la machine) et de ce fait en B24 même si la machine est déjà apparue, elle n'aura jamais été mise à 0 c'est pour ça qu'il faudrait la mettre à 0.

C'est là qu'est la difficulté, la finalité de la formule est dans un planning de trouver pour chaque machine qu'elle commande va démarrer en premier car si la commande 7 démarre déjà sur la machine 2, elle ne peut pas démarrer en même temps sur la machine 3.

En espérant avoir réussi à me faire comprendre.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
La subtilité m'avait échappée. :)
et c'est plus complexe.
Un nouvel essai en PJ avec en B6 :
VB:
=SI(OU(ET(ET(NB.SI(C$5:C5;C6)>0;NB.SI($D$4:D6;D5)<=1);NON(ET(NB.SI(C$5:C5;C6)=0;NB.SI($D$4:D6;D5)>=2)));ET(NON(ET(NB.SI(C$5:C5;C6)>0;NB.SI($D$4:D6;D5)<=1));ET(NB.SI(C$5:C5;C6)=0;NB.SI($D$4:D6;D5)>=2)))=VRAI;1;0)
J'ai laissé les formules de "réflexion" en dessous pour comprendre le cheminement.
 

Pièces jointes

  • Gymnastique cérébrale (2).xlsx
    14.5 KB · Affichages: 1

Blick

XLDnaute Nouveau
Merci pour votre réponse c'est ce que j'attendais mais j'espérais que la formule puisse fonctionner même si les numéros sont en désordre ou si on en rajoute, en effet le tableau dans lequel j'aimerais adapter cette formule contient environ 40 numéros machines et une centaine de numéros commande et le plus souvent dans le désordre.
 

Pièces jointes

  • Gymnastique cérébrale plus grand.xlsx
    16 KB · Affichages: 5

Discussions similaires

  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
332

Statistiques des forums

Discussions
312 207
Messages
2 086 240
Membres
103 162
dernier inscrit
fcfg