MFC spéciale

Résolu
Bonjour,
Dans le fichier ci-joint je cherche à mettre une MFC répondant à critères explications dans le fichier.
https://www.cjoint.com/c/IKqqvVoEBMh
Pas trouvé de solution
Merci pour votre aide

Configuration: Windows / Firefox 70.0


--
Commence par faire le nécessaire ,puis fait ce qu'il est possible de faire et tu réaliseras l'impossible sans t'en apercevoir
Si la réponse vous satisfait, le merci à gauche vous attend.

45 réponses

Résumé de la discussion

La problématique concerne la mise en place d'une macro (MFC) répondant à des critères précis décrits dans le fichier fourni. La solution la plus avancée repose sur une macro Worksheet_Change appliquée à une plage spécifique (B2:H4) qui vérifie les saisies et colore en rouge les entrées non conformes, avec une adaptation possible pour le cas féminin. Des variantes abordent des validations de données personnalisées et l’élaboration de règles selon le genre, ainsi que des ajustements pour éviter les erreurs lors de sélections multiples. D’autres contributions proposent des alternatives en macro ou en formule pour sécuriser l’entrée et répondre aux différents scénarios, tout en fournissant des exemples de code et des conseils de mise en œuvre.

Bobot (l’IA à votre service)
  1. Bonsoir,
    si on reprend ton fichier, ligne 2 tu as deux fois 1 que tu colorises et deux fois 2 dont tu n'en colorise qu'un et une fois 3 qui est supérieure que tu ne colorises pas ce qui n'est pas logique d'après ce que tu as écris
    "Quelle MFC appliquer par ligne pour mettre en rouge la cellule qui contient un chiffre supérieur ,à 2 chiffres identiques présent dans cette même ligne." tu as deux fois 1 et deux fois 2 qui devraient être colorisées en bleu et en rouge la cellule contenant 3 en rouge parce que supérieure

    1
    1. Bonsoir Mike
      Merci pour ta réponse
      Les couleurs mises ne sont là que pour différencier les chiffres figurant dans la ligne.
      Le but recherché a partir du moment ou 2 chiffres identiques sont dans une ligne on ne
      peux plus mettre un chiffre de valeur supérieure
      exemple dans la ligne 2 cellule F2 si je mets un 2 cette cellule doit se colorier en rouge
      0
  2. Bonjour à vous deux

    Par MFC je ne vois pas non plus
    Par macro :
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:H4")) Is Nothing Then
    col = Target.Column
    ligne = Target.Row
    verif = False
    For n = 2 To col - 1
    a = Application.WorksheetFunction.CountIf(Range(Cells(ligne, 2), Cells(ligne, col - 1)), Cells(ligne, n))
    If a > 1 And Target.Value > Cells(ligne, n) Then verif = True
    Next
    If verif = True Then Cells(ligne, col).Interior.Color = 255 Else Cells(ligne, col).Interior.Pattern = xlNone
    End If
    End Sub


    Cdlmnt
    Via
    1
    1. Bonjour VIA
      Merci pour ton aide
      Je te renvois un nouveau fichier avec explications plus larges
      Il y aura plusieurs lignes dans le tableau vu le nombre de joueurs
      https://www.cjoint.com/c/IKrjqAX3hFh
      J'espère que là tu vas comprendre ce que je souhaite,désolé si je me suis mal exprimé
      Cordialement
      0
  3. Bonjour JCB

    Comme je te le disais précédemment la solution passe par une macro que je t'indiquais
    https://mon-partage.fr/f/jXAXTBW0/

    J'ai appliqué la macro à la feuille 1
    En feuille 2 même type de macro mais qui au lieu de colorer en rouge empêche de rentrer la valeur non valide

    Par contre si c'est pour répondre aux attentes de gigipong il parlait dans sa demande du cas supplémentaire des équipes féminine qui n'est pas pris en compte ici, mais il sera facile d'adapter le macro dans ce sens

    Cdlmnt
    Via
    1
    1. Nos posts se sont croisés le code dans ton post 5 nickel exactement ce qu'il fallait
      Merci encore
      je vais surement revenir car je vais avoir des soucis avec les féminines.
      0
  4. Normal le bug si on selectionne plusieurs cellules
    Pour pallier cela rajoute avant le 1er IF cette ligne
    If Target.Cells.Count > 1 Then Exit Sub


    Pour les féminines quel est exactement les conditions à prendre en compte je n'ai pas trop compris l'histoire de 10 possible
    1
    1. pour les féminines je vais monter un fichier après on verra comment le rendre opérationnel
      Je reviens sur le fichier post 5 qui fonctionne bien ;j'ai un souci quand je renomme la feuille
      "Brulage Masculin" le code ne fonctionne plus

      J'ai trouvé et ça fonctionne
      0
  5. Bonjour DjiDji

    Ta formule de MFC est intéressante mais ne fonctionne pas selon l'attente, ainsi en G3 elle autorise les valeurs 3 et 4 qui sont interdites puisque deux fois 2 dans les cellules précédentes il ne peut y avoir de nombre supérieur à 2

    Cdlmnt
    1
    1. Je ne suis pas d'accord
      on a en ligne 3
      1 3 2 3 2 4
      Apres le 2 éme 3 je peux mettre 2(2<3 ou meme 3 (3 n'est pas supérieur a 3) mais 4 devient rouge
      il est le premier "chiffre supérieur ,à 2 chiffres identiques présents dans cette même ligne."


      Crdlmt
      0
    2. Je ne te parle pas de la ligne 3 du tableau mais de la cellule G3 (ligne 2 du tableau) où on peut rentrer des valeurs supérieures à 2 alors qu'il y a deux 2 avant
      Ta MFC fonctionne lorsque le chiffre en doublon est aussi le max de la plage mais pas dans le cas contraire, comme en ligne 2 du tableau le doublon est 2 et le nombre max 4 mais qui n'est pas un doublon
      0
    3. Ok
      0
  6. Re

    Si j'ai compris comme il faut :
    https://mon-partage.fr/f/qZ3lWoCS/

    Cdlmnt
    1
    1. Bonsoir
      Tu es encore un chef ça fonctionne on ne peut mieux
      Bonne soirée
      Cordialement
      0
  7. Re

    Pas sur de comprendre !
    Tu veux dire par exemple que si en J1 il a été joué en 8 et en J2 en en 7 il ne sera possible en J3 que de jouer en 8 ou inférieur ? et si en J3 il est joué en 5 par ex , cela ne change rien on peut jouer en 8 ou inférieur ?
    Par contre si en J1 c'est 8 et en J2 c'est 11, en J3 on peut jouer en 11 et en dessous ?

    Cela reviendrait à dire qu'en J2 on peut jouer en n'importe quoi mais qu'à partir de J3 on ne peut pas jouer au dessus du max des journées précédentes, non ?

    Et il n'y a plus de différence masculin féminin ?

    1
    1. Tu me dis exact mais ton dernier exemple contredit cela, car on ne peut pas jouer au dessus du max impliquerait qu'on ne peux pas jouer en 5 mais dans dans ton ex tu dis on ne peux plus jouer en 4
      Ce qui voudrait dire que la règle du doublon s'applique aussi, le max est 4 mais comme il y a deux 3 on ne peut plus jouer au-dessus et donc pas en 4 ??
      1
      1. Pour simplifier 1* en 1 1* en 2 plus possible 3, 4, 5 etc
        0
    2. Re

      J'étais absent cet aprem

      Résumons :
      Pour les hommes comme pour les femmes n° de 1 à 9, brulage par rapport aux 2 plus petits n° précédemment, dans ton exemple 1 6 3 2, ne peut donc venir après que 1 ou 2
      Pour les femmes en plus sont acceptés 10 et 11 dans tous les cas
      Donc pas besoin d'un tableau spécial féminine

      Merci de me confirmer que je raisonne enfin correctement
      Si c'est bien le cas je pense que la macro est inutile et qu'une MFC suffira

      1
      1. Bonsoir
        Je commence à m'y perdre l'exemple que j'ai mis post 26 n'est pas bon
        Il faut essayé avec un seul tableau pour filles et garçons
        dans l'exemple 1 6 3 2, ne peut donc venir après que 1 ou 2 plus rien ne peut venir puisque les chiffres mini sont présent
        0
    3. Bonjour

      Pour moi j'ai fini pour l’instant je t'ai envoyé le fichier hier (message 30) , tu ne l'as pas vu ?
      Il est pour garçons et filles mais teste le, s'il fonctionne comme tu veux je modifierai la macro pour avoir une macro pour une feuille garçon uniquement
      1
      1. Bonjour

        Sélectionne la plage B4:H123 puis Données - Validation de données et change le maximum

        Cdlmnt
        1
        1. Re

          La macro de ton fichier considéré comme fini avait encore des erreurs (du aux rajouts de colonnes)
          J'ai planché sur les brulages des filles et je pense que j'ai pu les intégrer correctement dans la macro
          Fais tous les tests nécessaires et tu me diras
          https://www.cjoint.com/c/IKwamDQNQkP

          Cdlmnt
          1
          1. Bonjour

            On va finir par y arriver !
            https://www.cjoint.com/c/IKwoKwBlluP

            Cdlmnt
            1
            1. Re je m'arrache les cheveux ...
              Toujours des hic
              https://www.cjoint.com/c/IKwqu32Hsuh
              Si trop hard on laisse tomber pour les filles
              Je ne vais pas abuser de ton temps
              Crdlt
              0
          2. Il suffit de compléter ces 2 lignes de la macro
              ' coloration cellule
                     If Target.Value < 10 And Target.Value > bruleM Then Cells(ligne, col).Interior.Color = 255
                    If Target.Value > 9 And Target.Value > bruleF Then Cells(ligne, col).Interior.Color = 255

            la 1ere par
            :Msgbox "BM"

            la 2nde par
            :Msgbox "BF"


            1
            1. Sans doute parce que tu as rajouté après les lignes et non à la fin des lignes comme je disais
              Ta macro modifiée doit donner ceci :
              ' coloration cellule
                       If Target.Value < 10 And Target.Value > bruleM Then Cells(ligne, col).Interior.Color = 255:Msgbox "BM"
                      If Target.Value > 9 And Target.Value > bruleF Then Cells(ligne, col).Interior.Color = 255:Msgbox "BF"

              1
              1. Re,

                Je devais être à l'ouest ou fatigué hier
                Dans la macro dans la partie brulage en feminin - min pour >9 tu as la boucle :
                 For n = 4 To col - 1
                                 If Cells(ligne, n) > 10Then m(n - 3) = Cells(ligne, n)
                                Next


                Bien sûr ce n'est pas >10 qu'il faut mais >9

                On va y arriver !

                Enfin si tu veux contrôler par la validation de données l'entrée différente pour masculin et féminind'un nombre entier, tu effaces ta validation actuelle , tu sélectionne toute la plage - Validation de données et dans Autorise tu choisis Personnalisé et dans Formule tu entres :
                =ET(ENT(D4)=D4;SI($C4="M";D4<10;D4<12))
                1
                • 1
                • 2
                • 3