Fomule de calcul excel

Résolu
Bonjour,
Dans le tableau sous excel 2007, comme si dessous, dans chaque colonne, je dois avoir pour chaque jour de la semaine, 3 cellules qui commence par un "C et 3 cellules qui commencent par un "S". Si je les aient, dans la dernière ligne, j'aimerai que "OK" s'inscrive automatiquement. Par contre s'il manque un "S" ou un "C", j'aimerai que "-1 ou -2 ....etc" s'inscrivent automatiquement. mais je ne sais pas comment faire. merci pour votre aide.

lundi mardi mercredi
pierre c1 s1
paul c2 s1
jacques c3 s2
alain c2 c2
franck s1 s1
emile s3
laurent c3
georges c2
michel s3

OK -2 -4

14 réponses

Résumé de la discussion

Problème : dans Excel 2007, colonne dédiée à un jour nécessite trois entrées commençant par C et trois entrées commençant par S; pour que la dernière ligne affiche OK si tout est présent. Des solutions proposées cherchent à compter les manquants pour atteindre trois éléments par catégorie et à présenter un code négatif (par exemple -1, -2) lorsque l'un des deux types manque. Certaines réponses suggèrent d'utiliser NB.SI et des formules MIN pour totaliser les occurrences C et S et déterminer le nombre de manquants à atteindre. En pratique, une approche donne un exemple de formule qui vérifie ces conditions sur une plage et renvoie une valeur négative lorsqu'un C ou S manque, avec une copie horizontale possible.

Bobot (l’IA à votre service)
  1. je peux vous envoyer un extrait du tableau par mail si besoin
    0
    1. Contributeur
      Salut,

      ce serait bien plus clair si tu nous mettais ton fichier ici. Pour ce faite passe pas CIJOINT et ensuite colle nous le lien ici.

      Merci
      0
      1. http://www.cijoint.fr/cjlink.php?file=cj200912/cij7w77uIp.xlsx
        0
        1. Contributeur
          Bonsoir
          ce ne sera peut être pas la peine si nous nous sommes compris:
          pour l'exemple:
          si vous tester la colonne B sur les lignes de 2 à 9:
          en B10:
          =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";"")
          par contre que voulez vous afficher si la condition n'est pas remplie, le nombre de S ou le nombre de C?
          à tout hasard, voyez avec ceci:
          =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";"C= "&NB.SI(B2:B9;"*C*")&" / S="&NB.SI(B2:B9;"*S*"))
          Qui vous donnera dans la même cellule si la condition n'est pas remplie:
          C=.... / S=... avec le nombre de chaque code
          Revenez s'il vous faut autre chose.
          crdlmnt

          0
          1. si la condition n'est pas rempli, je voudrais qu'il soit inscrit -1 ou -2 etc... en fait je dois avoir pour tous les jours de la semaine C1 C2 C3 S1 S2 S3 (peut importe le prénom)
            0
        2. le chiffre derrière le C ou le S n'est pas important, c la dernière ligne qui m'interresse
          0
          1. Contributeur
            Alors on revoie la formule:
            =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";SI(NB.SI(B2:B9;"*C*")>2;3-NB.SI(B2:B9;"*S*");SI(NB.SI(B2:B9;"*S*")>2;3-NB.SI(B2:B9;"*C*");3-NB.SI(B2:B9;"*C*")+3-(NB.SI(B2:B9;"*S*")))))

            Celle là vous donnera le total des S et C manquant, si l'autre ne vous convient pas, sans distinguer les C des S.

            Ca ça peut aussi se faire mais c'est un peu plus long.
            ça donne ça:

            =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";SI(NB.SI(B2:B9;"*C*")>2;"S "&3-NB.SI(B2:B9;"*S*");SI(NB.SI(B2:B9;"*S*")>2;"C "&3-NB.SI(B2:B9;"*C*");"C "&3-NB.SI(B2:B9;"*C*")&" / "&"S "&3-(NB.SI(B2:B9;"*S*")))))

            Crdlmnt

            0
            1. Contributeur
              En fait la formule de Vaucluse est à peu près correcte :)
              =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";"C= "&NB.SI(B2:B9;"*C*")&" / S="&NB.SI(B2:B9;"*S*"))

              C'est juste le derniere partie que je ne vois pas comment adapter "C= "&NB.SI(B2:B9;"*C*")&" / S="&NB.SI(B2:B9;"*S*"))
              tu as 6 au total alors il faudrait faire 6 - la somme des NB.SI trouvé et l'afficher en négatif

              Si j'ai bien compris biensur
              0
              1. Contributeur
                Bonjour Ricky
                en fait j'ai voulu distinguer les totaux S et C dans la même formule, mais en relisant la demande, c'est le nombre de manquants pour aller à trois qu'il faut identifier (du mois je crois), d'où mon second message qui donne dans une première formule le total des manquants sans distinction et fait la distinction entre C et S dans la deuxième.
                Test à l'appui que je peux transmettre, mais étant sur 2003 je n'ai pas accès au fichier du demandeur
                Bien amicalement
                PS: on ne peut pas faire le calcul 6-somme des NB.SI, car s'il y a 4C et 1S le résultat sera 1 alors que l'attendu est 2 (soit 2 S manquants)
                0
                1. c vrai que la formule de vaucluse est presque parfaite. je vous ai mis une petite explication dans le fichier pour que vous compreniez mieux.
                  http://www.cijoint.fr/cjlink.php?file=cj200912/cijYOKW3Ku.xlsx
                  0
                  1. Contributeur
                    Re
                    je ne peux pas accéder au fichier sous excel 2007. Avez vous tester mes dernières propositions?
                    Crdlmnt
                    0
                    1. Contributeur
                      oui moi je l'ai testé

                      =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";SI(NB.SI(B2:B9;"*C*")>2;3-NB.SI(B2:B9;"*S*");SI(NB.SI(B2:B9;"*S*")>2;3-NB.SI(B2:B9;"*C*");3-NB.SI(B2:B9;"*C*")+3-(NB.SI(B2:B9;"*S*")))))

                      affiche bien 2 mais il faudrait afficher -2
                      0
                    2. Contributeur
                      @Ricky38Ben voyons Ricky :-)
                      il suffit dans cette option, d'inverser le sens des items de la fin, ,je pense que ce n'est pas trop difficile?
                      =SI(ET(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")>2);"OK";SI(NB.SI(B2:B9;"*C*")>2;NB.SI(B2:B9;"*S*")-3;SI(NB.SI(B2:B9;"*S*")>2;NB.SI(B2:B9;"*C*")-3;NB.SI(B2:B9;"*C*")-3+(NB.SI(B2:B9;"*S*")-3))))
                      Qu'en penses tu?
                      Crdlmnt
                      PS: je n'avais pas jugé utile de préciser le moins puisque de toutes façons, la formule n'affiche que les manquants.Le moins existe par défaut!
                      Par contre, si elle marche et que tu as accès au fichier du demandeur, peux tu l'aider si besoin à adapter l'une où l'autre des options proposées?Merc i pour lui.
                      A+

                      0
                    3. Contributeur
                      @VaucluseSalut Vaucluse,

                      merci beaucoup, je l'ai testée sur le fichier du demandeur et ça fonctionne très bien.
                      0
                    4. @Ricky38quand je copie la formule dans mon tableau, ca me marque ok dans toutes les colonnes
                      0
                    5. Contributeur
                      @pinpon59Bonjour
                      Vous avez copié la formule depuis le message, et dans chaque cellule, où vous l'avez déplacée pour qu'elle s'ajuste sur la colonne choisie?
                      Vérifiez bien que les champs (B2:B9) soient bien modifiés avec la colonne correspondante
                      Crdlmnt
                      0
                  2. http://www.cijoint.fr/cjlink.php?file=cj200912/cijT8CxvNR.xlsx
                    0
                    1. ca y ai, il suffisait juste de changer la lettre des colonnes. en copiant la formule a garder la lettre de la premiere colonne. merci beaucoup a tous pour votre aide. c sympa
                      0
                      1. Contributeur
                        Salut,

                        content de savoir que ça fonctionne :)

                        N'oublie pas de mettre en résolu ;)

                        Bonne journée
                        0
                      2. salut,
                        j'ai un probleme avec ma formule que vous m'aviez donné, je suis obligé de faire des changements dans mon tableau. Je joint le fichier, j'espere que vous comprendrez, merci.

                        http://www.cijoint.fr/cjlink.php?file=cj201006/cij4qzUW0r.xlsx
                        0
                      3. Contributeur
                        Bonsoir tout le monde,

                        1 vlc = 1 c ou 1 s selon ce qui manque ?
                        eric
                        0
                      4. en fait il y a 2 personne dans la VLC, dons on peut considérer que ca fait 1 c ou 1 s
                        0
                    2. Contributeur
                      Re,

                      Fais des tests avec :
                      =MIN(NB.SI(B2:B10;"c*");3)+MIN(NB.SI(B2:B10;"s*");3)+MIN(NB.SI(B2:B10;"vlc*");2)-6

                      à recopier vers la droite.
                      Avec cette formule un 3ème vlc ne sera pas pris en compte.
                      C'est bien ce qu'il fallait ?

                      eric

                      edit: j'avais oublié, mettre en format de cellule personnalisé: 0;-0;"OK"
                      (sélectionner les cellules, clic-droit dessus, 'format de cellule', catégorie: 'Personnalisée', type: 0;-0;"OK" )
                      edit2: j'avais inversé les signes dans le format donc correction de la formule et du format personnalisé
                      0
                      1. je vais essayé et je te dirais quoi demain, merci encore
                        0
                      2. peut tu me donné ta formule avec ta modif, je suis pas très calé en formule, merci beaucoup
                        0
                      3. Contributeur
                        C'est la formule modifiée dans le post
                        Voir exemple.xls
                        eric
                        0
                      4. c'est presque ca, mais en fait mon tableau comporte une 20ène de personne, mais pour chaque colonne, je dois juste avoir c2 s2 c3 s3 et 2 fois vlc, merci encore
                        0
                      5. Contributeur
                        Tu peux tirer la formule vers la droite ...
                        Finalement vlc est un joker ou il en faut 2 obligatoirement ?
                        0
                    3. Contributeur
                      Facilement tu peux ne compter que les c et s suivis d'un seul caractère :
                      =MIN(NB.SI(C2:C10;"c?");2)+MIN(NB.SI(C2:C10;"s?");2)+MIN(NB.SI(C2:C10;"vlc");2)-6
                      Dis-moi si ça te suffit (les chaines non désirées doivent faire 3 car. et plus), sinon ça va compliquer singulièrement la formule.
                      eric
                      0
                      1. http://www.cijoint.fr/cjlink.php?file=cj201006/cijRkue7eV.xls

                        Bonjour, je te met le lien du vrai tableau avec toutes les explications. J'ai mis ta formule qui fonctionne, il y a juste une info qu'il prend en compte alors qu'il ne devrait pas. Merci de ton aide.
                        0
                      2. Contributeur
                        Pour être précis parce qu'on tourne un peu en rond, est-ce qu'il te faut au minimum 1 C2 et 1 C3 ou est-ce que tu considères 2 C2 (par exemple) sans C3 correct ?
                        idem pour S2 et S3
                        0
                      3. oui il me faut 1 C2, 1 S2, C3, 1 S3, VLC, VLC. Si il ne manque aucunes de ces 6 valeurs, OK doit s'incrire. si il en manque, je doit voir apparaitre -1 ou -2 etc...
                        0
                      4. Contributeur
                        alors :
                        =MIN(NB.SI(C6:C32;"C1");1)+MIN(NB.SI(C6:C32;"C2");1)+MIN(NB.SI(C6:C32;"S1");1)+MIN(NB.SI(C6:C32;"S2");1)+MIN(NB.SI(C6:C32;"vlc");2)-6
                        0
                      5. impec ca fonctionne, vraiment merci
                        0