SI PLUSIEURS CELLULES REMPLIES ALORS

SONIA -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je voudrais créer une formule qui puisse décrire cette regle:
si un ecart 3 jours de suite (3 cases cochées "1" dans ecart), alors une non conformité, mais si ce ne sont pas des jours a la suite, pas de non conformité.

exemple

LUNDI MARDI MERCREDI JEUDI VENDREDI

ECART GRAVITE ECART GRAVITE ECART GRAVITE ECART GRAVITE ECART GRAVITE
1 1 1 1 1 1 1 1 1 1

EXPLICATION:
3 écarts de "gravité" 1 forment une non conformité suite à la récurrence de la situation (3 jours consécutif)
Les gravités sur trois jours consécutifs sont ajoutés, si =3,4,5 alors une non conformité
6,7,8= 2 non conformité
9,10,11= 3 non conformité...

La difficulté pour moi est quil s'agit de trois jours consécutifs, et non de la semaine, de plus, une gravité 3 (qui est une gravité max) entraine de suite une non conformité.....

Merci de votre aide!

28 réponses

so
 
Toutes mes excuses, il semblerai que je me sois mélangé les pinceaux entre les personnes pour la dernière réponse,

-Marcel aucun soucis et merci pour tout, le fichier avec cumul de gravité avec les colonnes rajoutées à coté de chaque gravité fonctionne très bien, merci pour tout!

-Vaucluse, le fichier est aussi très interessant, et le problème du lundi 1 , mardi 0 et mercredi 2 = affichage d'une NC au mercredi est sur votre fichier. ( ou le recap des jours est fait en fin de feuille sur la gauche), le concept est aussi très interessant puisque cela me permettrai de garder simplement le tableau tel quel à l'impression sans ajout de colonne...

merci pour tout à vous deux,
0
so
 
Toutes mes excuses, il semblerai que je me sois mélangé les pinceaux entre les personnes pour la dernière réponse,

-Marcel aucun soucis et merci pour tout, le fichier avec cumul de gravité avec les colonnes rajoutées à coté de chaque gravité fonctionne très bien, merci pour tout!

-Vaucluse, le fichier est aussi très interessant, et le problème du lundi 1 , mardi 0 et mercredi 2 = affichage d'une NC au mercredi est sur votre fichier. ( ou le recap des jours est fait en fin de feuille sur la gauche), le concept est aussi très interessant puisque cela me permettrai de garder simplement le tableau tel quel à l'impression sans ajout de colonne...

merci pour tout à vous deux,
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 451
 
RE
le problème vient du fait que l'on a eu du mal avec vos info à déterminer ce qui se passe lorsque le total est de 3 ou>3 quand il y a un zéro au milieu. Il apparait maintenant que ce cas n'était pas une NC
mon modèle comptait 1 lorsqu'un total de ce type était obtenu.
Ce dernier modèle devrait résoudre ce dernier point
http://www.cijoint.fr/cjlink.php?file=cj201003/cijA5oW9lB.xls
Mais ne quittez pas la proposition de Marcel qui semble plus simple à priori?
Restera peut être à traiter ensuite dans sa proposition le report de semaine précédente..
Bonne chance
Crdlmnt
0
Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 451
 
Re
vous n'avez pas du voir le dernier modèle (mess 31), mais l'essentiel est que vous ayez d'une façon ou d'une autre résolu votre problème. Des colonnes rajoutées dans le tableau ou à l'extérieur, ça c'est à vous de voir
Crdlmnt
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
J'insiste, mais quand tu auras répondu à ces questions du post 12 tout le monde y verra plus clair je pense...
Tu y as répondu par Vaucluse à très bien récapitulé les infos données et dans le même post : Merci pour le travail de Vaucluse, très bonne idée, cependant, (désolé!), le fonctionnement n'est pas exact...
Et les 2 tentatives de marcel ce sont aussi résumée par 'c'est bon mais....'

Il n'y a aucune rigueur ni exhaustivité dans l'exposé de ta demande.
Et lorsque les formules se complexifient il est de plus en plus dur de modifier ou d'adapter à une nouvelle précision, un nouveau cas.

Si tu as 6 jours consécutifs avec gravité 1 est-ce que tu as :
- 1 NC jours 1 et 4 (au début de 2 périodes, et on repart à 0 pour le décompte)
- 1 NC jours 3 et 6 (en fin de 2 périodes, et on repart à 0 pour le décompte)
- 1 NC jours 3,4,5,6 parce qu'on ne regarde qu'en arrière
- 1 NC jours 1,2,3,4 parce qu'on ne regarde qu'en avant ?
- 1 NC jour chaque jour parce que l'on peut regarder 3 jours consécutifs en avant et en arrière ?

Précises ou fais un tableau sur 1 ligne (en omettant les WE) présentant les différents cas pour que tout soit bien clair.

eric
0
so
 
Voici le tableau récapitulatif de votre demande concernant les six jours consécutif, en sachat que la proposition de marcel fonctionne,

http://www.cijoint.fr/cjlink.php?file=cj201003/cijyjTH0gK.xls


merci

Cdlt
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Vu que chaque feuille dépend de la précédente, et celle-ci de celle qui la précède etc une fonction personnalisée n'est peut-être pas adaptée.
Vu aussi que le changement de feuille par formule risque d'être chaud voici une proposition par macro avec un fichier exemple.

Pour simplifier les évolutions de ta feuille les lignes et colonnes concernées sont définies au début dans des Array().
J'ai supposé que 2 gravités consécutives de valeur 2 et 1 donnaient une NC.
Pour le contrôle les gravités ayant généré une NC sont sur fond orange.

Sub NC()
    Dim ws As Worksheet, listCol As Variant, listLig As Variant
    Dim cptNC() As Long, NC() As Long, lig As Long, col As Long
    ' liste des colonnes gravité, la dernière étant le nombre de NC de la semaine
    listCol = Array("D", "H", "L", "P", "T", "X")
    ' liste des lignes avec gravité
    listLig = Array(6, 7, 9, 10, 11, 12, 13, 14)
    '
    ReDim cptNC(UBound(listLig))
    For Each ws In Worksheets
        If Left(ws.Name, 3) = "Sem" Then
            ReDim NC(UBound(listLig))
            For lig = 0 To UBound(listLig)
                For col = 0 To UBound(listCol) - 1
                    If ws.Range(listCol(col) & listLig(lig)) > 0 Then
                        ' 1 gravité détectée
                        cptNC(lig) = cptNC(lig) + ws.Range(listCol(col) & listLig(lig))
                        If cptNC(lig) >= 3 Then
                            ' somme gravités >=3  => +1 Non Conformité
                            cptNC(lig) = 0
                            NC(lig) = NC(lig) + 1
                            ws.Range(listCol(col) & listLig(lig)).Interior.ColorIndex = 45
                        Else
                            ws.Range(listCol(col) & listLig(lig)).Interior.ColorIndex = xlNone
                        End If
                    Else
                        ' pas de gravité : remise à 0 du compteur
                        cptNC(lig) = 0
                    End If
                Next col
                ws.Range(listCol(UBound(listCol)) & listLig(lig)) = NC(lig)
            Next lig
        End If
    Next ws
End Sub


exemple sur 2 semaines : so.xls
shift+ctrl+T pour lancer la macro NC (à faire après chaque mise à jour des données)

Tester tous les cas de figure plus complètement.

eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
PS: j'ai oublié de précisé que le nom des feuilles de données devait obligatoirement commencer par 'Sem' (respecter la majuscule), elles qu'elles devaient être triée dans l'ordre croissant puisque je les balaye dans l'ordre de leur position.
0
so
 
Bonjour,

Merci pour la macro elle fonctionne dans tous les cas de figures, cette solution me permet de ne pas modifier la visualisation du fichier pour les différents intervenants qui interviennent dessus et c'est un très bon point!
J'aurai une question au niveau des onglets, tous mes onglets sont notés ainsi:
08.03.10 au 12.03.10
15.03.10 au 19.03.10
et ainsi de suite sur toute l'année, est ce qu'en le mettant sous la forme:
Sem 08.03.10 au 12.03.10
Sem 15.03.10 au 19.03.10 ...

est ce que les macro vont fonctionnées ainsi ou faut-il que je renomme mes pages?

Merci encore!
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

tu peux remplacer :
    For Each ws In Worksheets
        If Left(ws.Name, 3) = "Sem" Then
par :
    For Each ws In ThisWorkbook.Worksheets
        If IsDate(ws.Name) Then


Seules les feuilles dont le nom correspond à une date conforme seront traitées, les autres non.
Et avec la modif ... In ThisWorkbook.Worksheets seul le classeur ayant la macro pourra être traité. Sinon tout classeur au premier plan était traité (risque de pertes de données...)

eric
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Après relecture je n'avais pas vu que tu avais 2 dates dans les noms d'onglets.
donc :
    For Each ws In ThisWorkbook.Worksheets
        If IsDate(left(ws.Name,8)) Then
eric
0