Vérifier l'existence de données par ligne

Résolu

Bonjour,

J' ai un tableau de x colonnes (pour l'instant on va dire 9) et pour chaque ligne je dois avoir au moins et au plus un item (sélectionné par une zone de liste mais c'est pas le problème)

Par exemple j' ai 40 lignes et chacune de ces lignes doit contenir une fois et une seule fois Item1 , item2 , item 3 etc jusqu'à item 9. Pas forcément dans l'ordre, mais je dois tous les avoir une seule fois 

Si l'une des lignes n'a pas l'un de ces items ou en a 2 ou +, j'aimerais que la colonne 10 de la ligne où il y a incohérence se mette en "valeur". Ça peut être par un texte qui me permettra de faire une mise en forme conditionnelle par exemple.

Merci 


Android / Chrome 133.0.0.0

20 réponses

Résumé de la discussion

Le périmètre consiste à ce qu'une ligne de 9 colonnes contienne exactement une occurrence de Item1 à Item9 ; si une ligne manque un item ou en contient plusieurs, la colonne 10 doit afficher « valeur » pour permettre une mise en forme conditionnelle. Pour Excel 2021, on peut mettre en J1 la formule =SI(NBVAL(UNIQUE(A1:I1;1))<9;"valeur";"") et la recopier vers le bas. Une autre approche utilise NB.SI et SOMME pour vérifier que le compte des valeurs est égal à 9; =SI(SOMME(NB.SI(A1:I1;A1:I1))=9;"";"valeur") à recopier vers le bas, éventuellement avec une validation matricielle.

Bobot (l’IA à votre service)
  1. Hello,

    Quand tu annules la fusion de la cellule A1 sur toute la largeur de la feuille (???), ça plante plus.

    Et, j'insiste, tes MFC qui portent sur la totalité des colonnes et des lignes sont aberrantes

    1
    1. Peut être que la fusion A1, qui était faite jusqu'à la dernière colonne, fait planter car j' ai rajouté une colonne ? Chelou 

      0
  2. Modérateur

    Bonjour,

    Tu devrais donner un fichier d'exemple avec le résultat attendu.


    0
    1. Merci 

      Mais je suis sur téléphone actuellement.

      J' ai 6 items (que l'on va nommer 1 à 6) que je sélectionne pour chaque jour.

      Donc autant de lignes que de jours (ça c'est pas important), et pour chacune des colonnes, je dois avoir au minimum et maximum 1 item parmi les 6

      Ces items ne sont pas saisis mais sélectionnés par des zones de liste, ce qui empêche toute erreur de saisie 

      Merci 

      0
      1. Bonjour,

        A partir de Excel 2021. En J1 :

        =SI(NBVAL(UNIQUE(A1:I1;1))<9;"valeur";"")

        à recopier vers le bas.

        Daniel


        0
        1. Bonjour Danielc0

          S' il n' y a que 8 données la formule n'affiche pas valeur ? 

          Celle-ci fonctionne bien

          =SI(SOMME(NB.SI(A1:I1;A1:I1))=9;"";"valeur")

          0
        2. @PHILOU10120

          Bonjour et merci, c'est tordu ! avec 8 valeurs et  une cellule vide, il compte la cellule vide pour 1 valeur 0, soit 9 en tout. S'il y a deux cellules vides, ça fonctionne parce que UNIQUE ne compte q'une cellule vide.

          Daniel

          0
      2. Toutes versions :

        =SI(SOMME(NB.SI(A1:I1;A1:I1))=9;"";"valeur")

        à recopier vers le bas (possiblement, validation matricielle)

        Daniel


        0
        1. Merci à tous,

          Faudra que j'essaie demain mais je ne pense pas que cela pourra fonctionner.

          Mes items sont du texte, par exemple "Lyon", "Paris", "Marseille", "Lille" etc 

          Je dois avoir un de ces items dans chaque colonne (pas plus de 1 par ligne), mais je peux avoir des cellules vides sur chaque ligne puisque j' ai plus de colonnes que d'items.

          Merci 

          PS j' ai office 2016

          0
          1. Modérateur

            C'est une raison pour laquelle un fichier exemple est toujours utile en plus de la demande textuelle

            0
          2. @jee pee

            Oui,

            J'envoie ça tt à l'heure.

            Merci encore 

            0
        2. Sans être devant excel, j' ai pensé qu'un truc comme ça pourrait peut être le faire.

          Il y a peut-être plus simple et efficace 

          =SI(ET(NB.SI(B2:B9; "Paris")=1);(NB.SI(B2:B9; "Lille")=1); etc);vrai;faux)

          Vous en pensez quoi ?

          Merci 

          0
          1. Bonjour,

            Ce que j'en pense ? Que peut-être tu devrais être devant ton ordi ;-) Sérieusement, c'est pas faux, mais je pense que tu n'as pas essayé ma formule (celle dite "toutes versions"). Sinon, tu devras modifier la formule à chaque fois qu'il y aura 1 ville de plus ou de moins...

            Daniel

            0
        3. Je suis bientôt devant :)

          Mais j'ai certainement mal exprimé le besoin de base, ta formule ne peut pas fonctionner car j'ai certaines zones de liste (valeurs) par ligne qui ne rentrent pas en compte dans la vérification que je veux. Et surtout j'ai des colonnes entre chacune des valeurs saisies qui sont cachées, mais sont là.

          Par exemple en B4 je sélectionne une donnée, en C4, il y a une valeur calculée.

          En D4 je sélectionne une valeur, en E4 il y a une autre valeur calculée etc.

          C'est clair que mon énoncé de postulat n'exprime pas la totalité de la problématique, désole, mais sans être devant le truc, pas simple de penser à tout.

          J'essaie tout ça et merci

          0
          1. Si on ne peut pas trouver la bonne formule, pourquoi nous demander si la tienne est correcte !

            Daniel


            0
            1. Je n'ai jamais dit cela ! je dis juste que d'après vos réponses je me rends compte que vous n'avez pas l'ensemble des éléments !

              Et la mienne, je vais la tester, c'est vos réponses qui m'ont permis de "réfléchir" / "approfondir" !

              Merci

              0
          2. Ca semble fonctionner (mon truc)

            Par contre, excel "plante" à chaque modification, je pense qu'il y a trop de formules.

            J'ai essayé "ouvrir" "réparer", mais il plante

            Merci

            0
            1. Si "ouvrir et réparer" servait à quelque chose, ça se saurait ! Essaie plutôt d'ouvrir le classeur dans libre Office ou Open Office et de les enregistrer. Ca a réparé plus d'un classeur (au moins partiellement).

              Daniel

              0
            2. @danielc0

              Mais vous avez également un plantage ou pas ?

              J' ai installé office 21 et ça ne marche pas mieux chez moi 

              Surtout que je n'avais pas de problème avant la nouvelle formule, ce qui est bizarre 

              Merci 

              0
            3. @RV71

              Pas de plantage (Excel 365)

              Daniel

              0
            4. @RV71

              C'est que le classeur est corrompu ou commence à se 1corrompre. Est-ce que tu l'as ouvert dans LibreOffice  ? Tu peux aussi de déplacer les feuilles dans un nouveau classeur et enregistrer celui-ci.

              Daniel

              0
            5. @danielc0

              Non

              Il était ok avant cette formule dans 2016

              Il plante depuis 

              J' ai installé 2021, il plante encore 

              . je n' ai pas essayé libre Office 

              Je le fais demain.

              Je reviens dire ici mais c'est étonnant que je sois le seul et encore plus à cause d'une formule 

              Merci 

              0
          3. Si vous pouvez essayer...

            Mon fichier il faut modifier le premier jour du mois, ça se passe dans l'onglet "synthese", on ne peut que modifier le premier jour du mois sous la forme 01/04 par exemple (B4)

            Cela met en forme les lignes dimanche.

            Moi depuis que j'ai mis la formule en colonne S, je ne peux plus modifier B4 sans avoir un plantage du classeur.

            Merci

            ps cjoint hs

            voici le lien

            https://fromsmash.com/UIKQMb2vZv-ct

            0
            1. La seule modification, c'est la formule en S

              J'ai mis ceci (qui fonctionne d'ailleurs outre le fait que cela me fait planter Excel)

              =SI(JOURSEM(B4)=1;"";SI(ET(NB.SI(B4:Q4;"vallons")=1;(NB.SI(B4:Q4;"cluny")=1);(NB.SI(B4:Q4;"creches")=1);(NB.SI(B4:Q4;"paray")=1);(NB.SI(B4:Q4;"ain")=1));"";"ERREUR"))

              Tout ce qui doit être verrouilé, l'est, mais ce n'est pas nouveau.

              L'utilisateur ne doit rien pouvoir changer, sauf B4 (premier jour du mois) et la saisie dans les zones de listes. Seul l'onglet Synthèse est important (paramètres faut pas toucher), le reste on oublie, on peut même supprimer.

              Merci

              0
          4. Avec Excel 365 :

            =LET(tbl;ASSEMB.V(C4;E4;G4;I4;K4;M4;O4;Q4);flt;FILTRE(tbl;tbl<>"");SI(NBVAL(UNIQUE(flt))<>8;"valeur";""))

            Daniel


            0
            1. Je ne suis pas spécialiste 

              Mais comment cette formule peut elle fonctionner sans connaître les items ?

              Merci 

              0
          5. J' ai installé off 2021 le classeur plante 

            Bizarre 

            0
            1. Hello,

              Essaie :

              =SI(PRODUIT(NB.SI($C4:$Q4;parametres!$C$1:$G$1))=1;"";"nok")

              NB : tes MFC sur toutes les lignes de la feuille sont  exagérées !

              0
              1. Les mfc permettent d'avoir un coup d'œil rapide, et justement cette nouvelle fonctionnalité pourrait les diminuer 

                Merci 

                0
            2. Ou une macro VBA :

              Function Doublon(Plage As Range)
                Dim C As Range, Dico As Object
                Application.Volatile
                Set Dico = CreateObject("Scripting.Dictionary")
                For Each C In Plage
                  If Not IsNumeric(C.Value) Then
                    If Dico.exists(C.Value) Then
                      Doublon = "valeur"
                      Exit Function
                    Else
                      Dico.Add C.Value, C.Value
                    End If
                  End If
                Next C
                If Dico.Count = 8 Then
                  Doublon = ""
                Else
                  Doublon = "valeur"
                End If
              End Function
              

              Exemple :

              =doublon(C13:Q13)

              Daniel


              0
              1. Merci 

                Mais je peux avoir plusieurs personnes en repos par exemple 

                Merci 

                0
            3. Moi ça pla plante quand je change le jour 

              2016 et 21

              0
              1. 0
                1. Le lien ne retourne rien 

                  0
                2. @PHILOU10120

                  Pas sur pc

                  Mais 23Mo ?????

                  Je peux imaginer que excel puisse planter avec un tel fichier (du moins son poids)

                  Mais le mien, de mémoire, fait 500ko

                  0
                3. @RV71

                  Bonjour RV71

                  https://www.cjoint.com/c/OBznSL3reEg

                  Le fichier est trop lourd cela est dû aux MFC lorsque j'ai sélectionné les colonnes, j'ai pris les dernières à droite ce qui a sélectionné toute la feuille étant donné que celles-ci sont masquées.

                  Voici le fichier corrigé avec poids raisonnable. J'ai fais des modifications regardez si cela  vous convient

                  Bonne réception

                  0
                4. @PHILOU10120

                  Bonjour et merci

                  mais non ça ne convient pas...

                  La feuille Affectation on n'a pas à mettre quoique ce soit dedans.

                  Et surtout, ça ne fonctionne pas.

                  Par exemple, le 01/02 tu mets également Chloé sur Paray (ils sont du coup 2, et personne sur Ain), ta formule dans Affectation (faut la laisser sur Synthese) me retourne OK.

                  Merci tout de même !

                  0
              2. Je ne suis plus devant...

                Mais je ne vois pas trop pourquoi ce bug ?

                Et les mfc sont faites pour avoir une vision plus rapide pour les salariés.

                Faut que je vois pour limiter la mfc du dimanche qui effectivement déborde 

                C'est beaucoup plus lisible.

                Mais je ne comprends pas pourquoi ce rajout, sans mfc, fait planter. Encore un mystère de M$

                Je regarde ça demain 

                Merci 

                0