Mise en forme conditionnelle si 3 zéros

3

Bonjour à tous,

Je remplis chaque semaine une colonne (de 52 cellules car 52 semaines dans une année) par des "0" ou des "1". J'aimerai qu'une cellule (à côté de cette colonne peu importe) se colore lorsque je tape un 3ème "0" consécutif dans ma liste (et qu'elle reste rouge si j'en tape un 4ème, 5ème etc) mais qu'au moment où je tape un "1", ma cellule redevienne incolore.

Je pensais que cela allait être facile mais en passant par des mises en forme conditionnelles je n'y arrive absolument pas.
La compréhension du problème est simple, la résolution ne l'est pas pour moi (bien que je ne sois pas totalement novice sur Excel...).
Si quelqu'un connait une solution, je suis preneur !

Je vous remercie par avance :-)

Posté le 5 janvier 2017, 17:23
par Tibo4213
Répondre
3

Bonjour,

c'est un peu du bidouillage que je te propose mais ça peut fonctionner:

sur ta colonne de droite met cette formule :

=SI(ET(A2=0;A1:A1=0;A3=0);1;0) à partir de la 3ème ligne (tu peux mettre l'écriture en blanc pour l'esthétisme)

ensuite tu mets une mise en forme conditionnelle sur cette nouvelle colonne avec MFC sur les 1 dans la couleur que tu veux.

je ne vois que ça dans l'immédiat.

PS: peut être utiliser cette formule directement dans MFC avec une formule.

dis moi si cela te convient,

Cordialement,

Tom

Tom Posté le 5 janvier 2017, 18:06
par Tom
7

Bonsoir Tibo et Tom

Je vous propose la solution suivante :

http://www.cjoint.com/c/GAfshDOAaPN

Il faut cliquer sur le lien et  suivre les instructions pour récupérer le classeur Excel

J'ai mis la cellule d'alerte en tête de colonne A mais on peut naturellement la déplacer.

Vous verrez la formule dans la Mise en forme conditionnelle.  Si elle  pose problème, n'hésitez pas à poser les questions nécessaires.

Merci de confirmer que cela correspond bien aux attentes.

A+

Chris

CHRIS Posté le 5 janvier 2017, 19:13
par CHRIS
3

Tom merci pour ta réponse, malheureusement ce n'est pas ce que je cherche, bien essayé :) 

Chris, j'ai d'abord télécharger ton fichier que j'ai ensuite ouvert dans excel, sauf qu'à l'ouverture j'ai un message d'erreur qui me dit "excel a rencontré un contenu illisible. Voulez vous récupérer le contenu de ce classeur ?" et quand je mets "oui" il m’indique "Fonction supprimée: Mise en forme conditionnelle dans la partie /xl/worksheets/sheet1.xml".

Du coup j'ai tenté de l'ouvrir avec google sheet et là parfait je l'ouvre sans problème et c'est vraiment ce qu'il me faut, chapeau ! Qui plus est sans matrice !

Cependant quand je récupère sur google sheet ta formule de mise en forme conditionnel et que je la colle sur la cellule d'alerte en tête de colonne A (sur mon fichier excel), il me met un message d'erreur quand je valide "vous ne devez pas utiliser les opérateurs de référence (tels que les unions, intersection et plage) ni les constantes matricielles pour les critères Mise en forme conditionnelle". 

Connais-tu une solution ? Je travaille avec excel 2010 (j'ai tenté avec excel 2003 il n'arrive pas l'ouvrir...)

Merci beaucoup :-)


EDIT:

Finalement j'ai réussi avec 2003, par contre impossible d'appliquer la mise en forme conditionnel sur 2010, je pense qu'il y a un problème de syntaxe mais je ne vois pas encore quoi... En tout cas encore merci pour ce que tu as fait c'est vraiment génial.

Deux dernières choses : 

- lorsque je passe d'une liste en colonne à une liste en ligne, la cellule en tête affiche #REF! et je ne comprends pas pourquoi...

- Dans ma liste je peux des fois avoir des vides entre deux saisies, et dans ce cas la cellule reste incolore quoi qu'il arrive

J'en demande peut être trop ! Merci 

Tibo4213 Posté le 6 janvier 2017, 09:57
par Tibo4213
6

Bonjour,

Et oui, Excel réserve parfois des surprises....

Désolé mais j'ai construit le tableau à l'aide d'Excel 2007 et là, pas de problème.  J'ai essayé le tableau avec Excel 2013 et ... bingo, j'ai le même message que toi.  Je suppose que les concepteurs ont eu des cas de figure où l'usage des plages posait problème et qu'ils ont supprimé cette possibilité.

Mais Excel est toujours plein de ressources et il suffit de "tripoter" un peu pour trouver une solution.  Je te joins un nouveau classeur :

http://www.cjoint.com/c/GAgkpmZhKXN

Comme tu le verras, j'ai effectué le test nécessaire dans la cellule C1 et la mise en forme conditionnelle va tester la cellule C1 et le tour est joué.

Il est bien entendu que tu peux effectuer ce test autre part si tu as besoin de la colonne C pour autre chose.  Il faudra adapter le test dans la MEFC bien entendu.

A noter que cette colonne peut être masquée pour ne pas perturber l'affichage du tableau.

J'ai en plus ajouter un gadget qui impose de taper 0 ou 1 dans la colonne A comme cela on sécurise l'encodage.

J'ai aussi protégé l'onglet en ne laissant que la plage A2:A53 accessible.  Je n'ai pas mis de mot de passe donc tu peux enlever facilement cette protection.  Je fais toujours cela par sécurité et éviter que l'on écrase par mégarde les formules.

Merci de confirmer que cette fois cela fonctionne sur tous tes systèmes.

A+

Chris

CHRIS Posté le 6 janvier 2017, 11:28
par CHRIS
  • chapeau :) – Tom 6 janvier 2017, 11:33
  • Merci Chris, cette fois ça fonctionne parfaitement, merci beaucoup pour ton aide et comme dit Tom chapeau. Par contre ça fonctionne avec une liste verticale, mais quand je passe en liste horizontale, ça ne fonctionne plus. De plus quand je laisse une cellule vide dans ma liste, la matrice de fonctionne plus. Malheureusement je ne suis pas assez à l'aise avec ce genre de fonction pour trouver la manip à effectuer pour régler ces deux choses. Je te joins le classeur pour mieux comprendre : http://www.cjoint.com/c/GAgk1jQmLsJ Penses-tu que c'est faisable ? – Tibo4213 6 janvier 2017, 11:56
2

Je reviens car je n'avais pas remarqué tes deux demandes supplémentaires.

Pour pouvoir y répondre :

1 passage de colonne à ligne : tu veux dire que tes 52 lignes de la colonne A passent sur la ligne 2 par exemple sur 52 colonnes ?  Si c'est cela, c'est évident que la formule ne peut résoudre cela.  Il faut l'adapter à un travail en ligne. Confirmes moi et je fais

2 pour résoudre le cas des blancs, il faut que tu précises une règle mais cela ne sera pas évident car, comme tu l'as compris, l'astuce consiste à rechercher la dernière valeur encodée et, à partir de ce point d'appui, voir si au moins les 3 dernières lignes contiennent 0.  Or, s'il y a des blancs possibles, comment détecter la dernière ligne ?  Rien n'est impossible mais avant de plancher la dessus, posons nous la question : Pourquoi laisser des blancs...alors qu'il est si facile de mettre un 0...J'attends ton avis avant de démarrer.

A+

Chris

CHRIS Posté le 6 janvier 2017, 11:39
par CHRIS
4

1 C'est parfaitement ça

2 Je comprends parfaitement le soucis du vide, il est vrai que la formule ne permet pas de détecter la dernière ligne comme tu dis. 

En fait je suis en train de faire un planning dans le service dans lequel je travaille (je bosse en industrie) et nous avons différentes tâches programmées chaque semaine et toutes les tâches n'ont pas la même redondance, certaines doivent se faire de façon hebdomadaires, d'autres mensuelles, trimestrielles etc. 

Prenons l'exemple d'une tâche qui se doit faire de façon hebdomadaire, j'ai 52 cellules et donc chaque semaine je vais indiquer si mon service a fait cette tâche ou non. Si durant 3 semaines consécutives on ne l'a pas réalisé, bim j'ai une alerte et elle s'enlève dès que mon service la réalisé. Là pas de problème.

Maintenant prenons l'exemple d'une tâche qui doit se faire une fois toutes les deux semaines, mon planning m'indique que je dois la réaliser (admettons...) la semaine S1, S3, S5, S7 etc, sauf que semaine 2 je n'ai aucune raison de mettre un 0 car la tâche n'est pas programmée cette semaine là. 

Egalement, certaines tâches doivent présenter une alerte si elles n'ont pas été faites 3 fois d'affilé où on était censé les réaliser (là ok), mais d'autres ça doit être 4 fois d'affilé, 2, voire 1 pour certaines (c'est à dire un seul 0 et l'alerte s'affiche), en fait c'est en fonction de leur criticité et de l'importance de la tâche dans le processus de production de l'usine.

Voilà un exemple pour mieux comprendre : http://www.cjoint.com/c/GAgnis4DOAJ


Tibo4213 Posté le 6 janvier 2017, 12:15
par Tibo4213
3

Bonjour,

Je comprend mieux ta demande et dans quel contexte elle se situe.

Ne pourrait on pas voir le problème dans l'autre sens à savoir :

Il s'agit de d’appréhender la situation des entretiens à un moment donné (en principe la semaine correspondant à la date du jour). Cela ne sert à rien donc de rechercher la dernière entrée : il suffit de se fier à la date du jour, de la transformer en semaine, ce qui nous donnera la semaine à partir de laquelle il faut calculer le nombre de zéro. Donc plus de souci pour trouver le point d'appui. Attention : cette solution impose une procédure d'encodage préliminaire à la date du jour (il faut que l'encodage soit effectué pour la semaine correspondant à la date du jour sinon le test ne sera pas crédible mais c'est me semble t il logique)

Sommes nous d'accord ? Si mon raisonnement n'est pas bon et qu'il faut absolument trouver la dernière entrée, il faudra passer par une fonction personnalisée et donc du VBA

Pour ce qui est de 1 ; 2 ou 3 zéro, il faut pouvoir donner à Excel une référence qui permette de tester : je te propose d'ajouter une colonne qui donnera la criticité de la tâche.  Je propose par exemple : 1 ; 2 ; 3 pour respectivement  un zéro ; deux zéro et trois zéro. Ainsi il sera facile d'adapter le test en fonction de la catégorie.  Cela va représenter une formule assez longue mais pas très compliquée.

Sommes nous aussi d'accord ?

Chris

CHRIS Posté le 6 janvier 2017, 18:45
par CHRIS
  • J'ai commencé à programmer et j'ai 2 questions complémentaires : 1 le vide est gênant, pouvons nous remplacer ce vide par "-" pour les entretiens qui ne sont pas hebdomadaires. Excel interprète dans beaucoup de fonction le "" par zéro et cela complique fortement la formule qui va déjà être kilométrique 2 tu fait apparaître 2 critères : - criticité : 1*0 ; 2*0 ; 3*0 ; 4*0 - le fait que l'entretien ne doit pas nécessairement être fait toutes les semaines Ma question : si un entretien doit être fait toutes les 2 semaines et que la criticité est de 3 : cela veut il dire que la formule doit tester 6 semaines en arrière ?? Si c'est le cas, cela voudra dire qu'il faudra encore ajouter un critère par tâche qui sera la périodicité. Je te signale aussi que la formule va prendre des proportions très importante : le nombre de cas de figure à tester va être démentiel... Soit 4 niveaux de criticité et 2 niveaux de périodicité (j'espère qu'il n'y en a pas plus...). Merci d'éclaircir dès que possible A+ Chris – CHRIS 7 janvier 2017, 01:01
  • Bonjour Chris, Tout d'abord sur la criticité, tu peux limiter à 1*0 ; 2*0 et 3*0 (pas de 4*0). Oui c'est bien 6 semaines en arrières dans l'exemple que tu donnes. Après des périodicités il y en a des multitudes et pas seulement 2, je ne pensais pas que ça demanderait un tel travail et qu'il serait à ce point démesuré, donc je vais réfléchir à une autre solution plus simple. Encore merci Chris pour ton travail en tout cas – Tibo4213 7 janvier 2017, 14:10
  • Le plus simple serait que je t'envoie le planning excel comme ça tu comprendrais mieux, sauf que je ne veux pas le divulguer en public pour des raisons de confidentialité... – Tibo4213 7 janvier 2017, 14:18
3

Bonjour Tibo,

Je continue à réfléchir sur une solution donc continue à consulter le Forum

Cela serait effectivement plus facile avec ton fichier : ne peux tu enlever les informations confidentielles et les remplacer par des informations bidons ?  Ce qui m'intéresse, c'est la structure du fichier et des exemples de cas de figures.  

Il y a peut être aussi une possibilité de combiner les 2 tableurs et empêcher l'encodage dans ton tableau d'alerte.

Peux tu quand même fixer une limite pour les périodicités ?

A +

Chris

CHRIS Posté le 7 janvier 2017, 14:34
par CHRIS
2

Bonjour Tibo,

Je pense avoir trouvé une solution élégante :

http://www.cjoint.com/c/GAimhU8g7LN

Il y a un mode d'emploi dans le classeur qui explique comment l'utiliser et le raisonnement suivi.

Si tu as des questions, n'hésitent pas à les poser.  Les formules sont relativement faciles à comprendre je pense c'est la construction du tableur qui est un peu "space" étant donné le nombre de tests à effectuer.  Je les ai subdivisé en 3 (selon la criticité) pour ne pas avoir des formules kilométriques.

Tritures le tableau dans tous les sens pour voir si tout fonctionne comme tu le désires et voir si je n'ai pas oublié quelque chose par rapport à la pratique.

Réfléchis également s'il n'est pas mieux de mettre une date imposée plutôt que la date du jour comme point de départ.  J'ai mis quelques réflexions sur le sujet dans le mode d'emploi.

J'attends tes commentaires
Bon courage et A+

Chris

CHRIS Posté le 8 janvier 2017, 13:15
par CHRIS
3

De nouveau moi : j'avais oublié de protéger le classeur.  Je te le rejoins protégé ET j'ai aussi ajouté encore quelques explications dans le mode d'emploi.

A+

Chris

http://www.cjoint.com/c/GAimVBBXrLN


CHRIS Posté le 8 janvier 2017, 13:49
par CHRIS
3

Bonjour Chris,

Excuse moi pour cette réponse tardive, j'étais en déplacement qui a légèrement perdurer..

Quel travail de titan, j'essaye de comprendre le mode d'emploi de ton classeur désormais.

Pour ce qui est de mon planning,  plus simple je peux avoir ton mail pour te l'envoyer en toute confidentialité ? 

Tibo4213 Posté le 13 janvier 2017, 11:20
par Tibo4213
3

Bonjour Tibo,

N'hésite pas à poser des questions si le mode d'emploi n'est pas assez clair.

Pour ce qui est du planning, je préfère que tu m'envoies un fichier avec des données bidons (2 ou 3 pas plus sauf si tu as des cas de figure particuliers).  En fait l'utilité serait surtout de voir si il n'y a pas moyen de faire un lien entre les deux et éviter l'encodage.

N'oublie pas que ce site est publique.  Je ne tiens pas à avoir de retours de farceurs éventuels.

A bientôt

Chris


CHRIS Posté le 14 janvier 2017, 10:41
par CHRIS

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :