Microsoft 365 Bon courage, c'est simple mais complexe à la fois :o)

dvialla

XLDnaute Nouveau
Bonjour,

Je vais essayer d'expliquer simplement quel est mon besoin que je suis certains beaucoup d'entre vous pourront résoudre.
J'ai un énorme tableau (que j'ai simplifié) en pièce jointe pour faciliter l'explication.

Je cherche a tester pour chaque ligne de la colonne F si je dois contrôler la ref ...

Ce contrôle se fait sous condition :
- Si la criticité de la pièce est 1 :
Si il y les trois dernières valeurs de colonne sont "oui", afficher en cellule F de la ligne "Ne pas contrôler"
Si il y la dernière valeur de colonne est " Pas contrôlé", afficher en cellule F de la ligne "Ne pas contrôler"
Si il y les deux dernières valeurs de colonne est " Pas contrôlé", afficher en cellule F de la ligne "Ne pas contrôler"
Sinon "A contrôler"
- Si la criticité de la pièce est 2,
Si il y les deux dernières valeurs de colonne sont "oui", afficher en cellule F de la ligne "Ne pas contrôler"
Si il y la dernière valeur de colonne est " Pas contrôlé", afficher en cellule F de la ligne "Ne pas contrôler"
Sinon "A contrôler"

Une fois que j'aurais compris la routine et la gymnastique de VBA sur ces deux exemples, je pourrais créer d'autres criticités et adapter les règles ...

Ce remplissage peut être fait en appuyant sur un bouton lié à une macro à l'ouvertue du fichier par exemple.

Deuxième étape pour ceux que ca interresse. il me faudrait ensuite, en fonction de la réponse en colonne F, en cliquant sur la cellule (F11,F12,F13,...) que si :
- il y a "Ne pas contrôler", mettre dans la ligne de la colonne du jour "Pas contrôlé"
- il y a "A contrôler", aller vers une lien hypertexte que je mettrai sans doute dans la colonne C de chaque ligne (qui sera donc fonction de la ref)


Un grand, énorme merci.

Damien
 

Pièces jointes

  • Classeur1.xlsx
    10.3 KB · Affichages: 13

dvialla

XLDnaute Nouveau
Bonjour dvialla,


Une seule condition (la 1ère) suffit, non ?

A+
Bonjour,
Je pense qu'elle ne suffit pas car si on reste sur une seule itération "pas contrôlé" alors il y aura toujours marquer "ne pas contrôler". Le but est que s'il y a de suite 3 "pas contrôlé", il faille contrôler ...
Je ne sais pas si est claire. Par contre on peut réunir les deux conditions avec un inférieur ou égal je pense
 

job75

XLDnaute Barbatruc
Je maintiens ce que j'ai dit au post #2, d'ailleurs pour la criticité 2 vous n'avez pas fait l'erreur.

Voyez le fichier joint et cette formule en F11 :
Code:
=SI((NB.SI(DECALER(G11;;EQUIV("z";DECALER(G11;;;;COLONNES(11:11)-6))-1;;-2-(E11=1));"oui")=2+(E11=1))+(RECHERCHE("z";DECALER(G11;;;;COLONNES(11:11)-6))="Pas contrôlé");"Ne pas contrôler";"A contrôler")
Avec cette méthode pas besoin de VBA même s'il y a plus de criticités.

Bonjour Thierry.
 

Pièces jointes

  • Classeur(1).xlsx
    10.7 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Job75,

Sacrée formule ! Moi je ne sais pas faire !

Au moins mon fichier peut servir à comparer :
VBA :
1589541229620.png

Formule :
1589541249848.png


Bon appétit
@+Thierry
 

dvialla

XLDnaute Nouveau
Je maintiens ce que j'ai dit au post #2, d'ailleurs pour la criticité 2 vous n'avez pas fait l'erreur.

Voyez le fichier joint et cette formule en F11 :
Code:
=SI((NB.SI(DECALER(G11;;EQUIV("z";DECALER(G11;;;;COLONNES(11:11)-6))-1;;-2-(E11=1));"oui")=2+(E11=1))+(RECHERCHE("z";DECALER(G11;;;;COLONNES(11:11)-6))="Pas contrôlé");"Ne pas contrôler";"A contrôler")
Avec cette méthode pas besoin de VBA même s'il y a plus de criticités.

Bonjour Thierry.
OMG
Merci bcp thierry. Moi qui me disait "Damien si tu vois la formule, tu seras l'adapter pour créer d'autres cas ... " Je n'y comprends rien.
Par contre, le défaut que je vois et que je vais essayer de résoudre, c'est que s'il y a 2 fois "Pas contrôlé", il me marquer "Ne pas contrôler" alors qu'il devrait marquer "A controler".
En fait dans ta formule à partir du moment où il trouve un "pas controlé", on ne controle plus jamais la piece.
Je vais prendre un dolipran et je vais essayer de comprendre

Encore merci
 

dvialla

XLDnaute Nouveau
Je maintiens ce que j'ai dit au post #2, d'ailleurs pour la criticité 2 vous n'avez pas fait l'erreur.

Voyez le fichier joint et cette formule en F11 :
Code:
=SI((NB.SI(DECALER(G11;;EQUIV("z";DECALER(G11;;;;COLONNES(11:11)-6))-1;;-2-(E11=1));"oui")=2+(E11=1))+(RECHERCHE("z";DECALER(G11;;;;COLONNES(11:11)-6))="Pas contrôlé");"Ne pas contrôler";"A contrôler")
Avec cette méthode pas besoin de VBA même s'il y a plus de criticités.

Bonjour Thierry.
Salut Thierry,
Merci beaucoup, c'est un excellent boulot que je garde sous le coude (et que je vais vérifier) si jamais j'ai bcp de criticité à rajouter et que je ne comprends pas la formule de Thierry au point de l'adapter, vba est plus simple pour moi que la formule.
Encore merci
 

dvialla

XLDnaute Nouveau
Je maintiens ce que j'ai dit au post #2, d'ailleurs pour la criticité 2 vous n'avez pas fait l'erreur.

Voyez le fichier joint et cette formule en F11 :
Code:
=SI((NB.SI(DECALER(G11;;EQUIV("z";DECALER(G11;;;;COLONNES(11:11)-6))-1;;-2-(E11=1));"oui")=2+(E11=1))+(RECHERCHE("z";DECALER(G11;;;;COLONNES(11:11)-6))="Pas contrôlé");"Ne pas contrôler";"A contrôler")
Avec cette méthode pas besoin de VBA même s'il y a plus de criticités.

Bonjour Thierry.
Autre petit truc Thierry, j'essaie de tester ... si j'ai "oui", une blanc et 2 "oui", il ne voit pas cela comme trois "oui" de suite ... J'ai peut être omis de préciser que les blancs ne comptaient pas ... Je pense que ca va complexifier la choses et peut être passer sous VBA ?
 

dvialla

XLDnaute Nouveau
Bonjour @dvialla , @job75

Un premier jet un peu "alembiqué" LoL ;), on doit pouvoir optimiser ...

Mais ca à l'air de le faire...
@+Thierry
Je me suis penché un peu sur ton VBA qui n'est pas simple non plus ...
Sii on mets trois fois de suite "Pas contrôlé", il ne propose toujours pas de contrôler la pièce alors qu'il faudrait qu'après un ou deux "Pas contrôlé", en fonction de la criticité, il me dise de contrôler la pièce car je ne peux pas me permettre de ne pas contrôler la pièce deux ou trois arrivages de suite.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re bonjour @dvialla , Job75, le Forum

Ne confonds pas tout, moi je n'ai pas proposé de formule, je n'en suis pas capable !

Pour ta dernière demande, oui avec VBA c'est assez flexible, et je compte bien les occurrences des "derniers" que ce soit des "oui", des "non" ou des "pas contrôlé", et j'gnore les blancs...

Pour ta gouverne c'est toi qui maitrisera ceci, c'est dans cette partie :
VB:
ElseIf MyOui(UBound(MyOui) - 1) = "Pas contrôlé" And MyOui(UBound(MyOui) - 2) = "Pas contrôlé" And MyOui(UBound(MyOui) - 3) = "Pas contrôlé" Then 'Règle des trois "Pas contrôlé"
  Cell.Offset(0, 1) = "A contrôler d'urgence !"

Je te laisse voir
@+Thierry
 

Pièces jointes

  • XLD_dvialla_Criticité_Conditionnelle_v02.xlsm
    34 KB · Affichages: 7

job75

XLDnaute Barbatruc
Formule plus complète en F11 de ce fichier (2) au cas où l'on insèrerait des colonnes entre F et G :
Code:
=SI((NB.SI(DECALER(F11;;MAX(EQUIV("z";DECALER(F11;;1;;COLONNES(11:11)-COLONNE()));2+(E11=1));;-2-(E11=1));"oui")=2+(E11=1))+(RECHERCHE("z";DECALER(F11;;1;;COLONNES(11:11)-COLONNE()))="Pas contrôlé");"Ne pas contrôler";"A contrôler")
La fonction MAX évite les références circulaires s'il n'y a pas de textes après G ou H.
 

Pièces jointes

  • Classeur(2).xlsx
    10.8 KB · Affichages: 4

Discussions similaires