Pb. de MFC colorisé lorsque ligne si ok affiche dans cellule une valeur

Bonjour toutes et tous,

Petit problème suivant une mise en forme conditionnelle de certaines plages de cellules pour afficher QUINE (ou carton plein du jeu quine me suffira)

Objectif:

  1. Afficher quine sur la cellule d'a côté ou un msxgbox, lorsque le tirage est effectué suivant la liste de la colonne A de la feuille ou par les mfc des 2 cartons

NOTE: attention lorsque vous supprimer un carton, il faudra mettre manuellement les chiffres en respectant l'ordre pour les dizaines, vingtaines etc.( validation des Données)


ici sur l'exemple de cette image, si je prend l'exemple de N13 à V13 il y a une quine pour le carton 0002, suivant le tirage par double clic colorise en jaune + gras de la plage B5 à K14 (remerciements à Ordonc et 3GB), (@Ordonc, je ne suis pas arriver à adapter la macro sur ce classeur pour éviter les doublons lorsqu'on double clic sur la plage B5à K14, sur l'autre fil de discussion et sur l'autre classeur j'y suis arrivé mais pas celui-ci il est présent dans le code et avec des apostrophes devant en commentaire)


j'avais pensé à mettre le code ci-dessous sur la Worksheets change de la feuille qui hélas! bien entendu ne fonctionnera jamais car, c'est une MFC, donc mon idée est que si c'est possible vu le contenu des numéros de tirages de la colonne A de cette feuille lorsqu'il détecte une ligne de quine pourrait-il m'afficher ' Quine' dans la cellule d'à côté, ici, se serai sur la cellule X13 faisable ou non ?

 ' ne fonctionnera pas à cause de la MFC '   Interior.ColorIndex = 46 (orange)
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("Feuil1").Range("N12:V12").Interior.ColorIndex = 46 Or Sheets("Feuil1").Range("N12:V12").Interior.ColorIndex = 3 Then
 MsgBox "Quine! ligne 1 - carton n°00002"
 ElseIf Sheets("Feuil1").Range("N13:V13").Interior.ColorIndex = 46 Or Sheets("Feuil1").Range("N13:V13").Interior.ColorIndex = 3 Then
 MsgBox "Quine! ligne 2 - carton n°00002"
 ElseIf Sheets("Feuil1").Range("N14:V14").Interior.ColorIndex = 46 Or Sheets("Feuil1").Range("N14:V14").Interior.ColorIndex = 3 Then
 MsgBox "Quine! ligne 3 - carton n°00002"
 End If
End Sub

je suis dans une impasse une soluce , merci d'avance pour vos idées, soluces et de votre patience

ci-joint le classeur ( prenez votre temps !ceci n'est pas presser )

crdlt,

André

zloto001

Hello André,

Déjà, tu peux remplacer toutes tes règles de MFC par :

=ET(N5<>"";N5=RECHERCHEV(N5;$A:$A;1;FAUX))

Je viendrai éditer ici quand j'aurai trouvé la formule la plus simple pour écrire ton quine. Il y a plein de façons de faire, mais autant trouver la plus élégante ;)

Re,

Merci Joyeux Noel pour le kdo -;)

Edit: Nickel super cela fonctionne à merveille cette MFC plus court est plus net^^

=ET(N5<>"";N5=RECHERCHEV(N5;$A:$A;1;FAUX))

Ajouts et modifications v5:

- nombre de valeur de la colonne A cellule D16 de la feuille2 (Feuil1) afin d'effectuer la différence restant de chaque tirage

- mfc modifié

ci-joint classeur v5

J'avais trouvé une façon plus élégante de faire à un moment, mais je ne retrouve plus :

Pour la ligne 12 :

=SI(NB.SI($A$2:$A$100;O12)+NB.SI($A$2:$A$100;P12)+NB.SI($A$2:$A$100;Q12)+NB.SI($A$2:$A$100;R12)+NB.SI($A$2:$A$100;S12)+NB.SI($A$2:$A$100;T12)+NB.SI($A$2:$A$100;U12)+NB.SI($A$2:$A$100;V12)+NB.SI($A$2:$A$100;N12)=5;"Quine ligne 1";"")

Et tu mets ta ligne écrite par défaut en rouge. Le texte ne va apparaître que quand tu auras 5 valeurs sur la ligne concernée.

Re,

EDIT super merci, oui cela fonctionne ^^ j'ai juste supprimer le contenu de la cellule X12, pour la formule,

je vais effectuer les 5 autres sur le même principe ^ en espérant me pas me planter

ztest

je met le classeur v5.a ci-joint de ta soluce de la formule x12 ^^

crdlt,

André

Bonjour à tous,

j'ai bien :
=SI(NB(SI(N12:V12="";"";EQUIV(N12:V12;A:A;0)))=5;"Quine";"")
à valider en matricielle.

Seulement sur mon excel j'ai des 0 dans tous les cas sur la feuille, alors qu'avec F9 je lis bien "" et "Quine" selon le cas.
C'est mon excel (2019) où ça fait ça chez vous aussi ?
eric

Bonjour à tous,

Pour la factorisation des NB.SI, je crois que :

=SI(SOMMEPROD(NB.SI($A$2:$A$100;N12:V12))=5;"Quine ligne 1;"")

devrait marcher.

Cdlt,

Bonjour eriiic,

Dès qu'on valide en matriciel, c'est tout bon sur 2013. Tu n'aurais pas oublié de faire ce que tu as dit de faire ?

Edit : C'est tout bon 3GB avec ta factorisation ^^

Re,

coucou Eriic, j'ai testé et cela fonctionne aussi en matricielle

classeur v5.b ci-joint

merci @ vous ^^

j'ai mis les codes pour les 5 autres

Edit 29/12/2020: @3GBcoucou 3GB, j'ai testé juste une apostrophe -"- ce qui donne :

Quine ligne 1"
  =SI(SOMMEPROD(NB.SI($A$2:$A$100;N12:V12))=5;"Quine ligne 1""") 
ztest2

Dès qu'on valide en matriciel, c'est tout bon sur 2013. Tu n'aurais pas oublié de faire ce que tu as dit de faire ?

Ben non, j'ai dessoûle depuis. Enfin je crois...
J'ai même fermé excel et recommencé, toujours des 0 que je ne m'explique pas.

Même la version avec Sommeprod() me retourne des 0 ?!? Bon, il fera jour demain...
Attention qu'elle est incomplète
. Elle compte les vides (qu'elle trouve après le dernier tirage).
eric

Bonjour toutes et tous

bon j'ai toujours ce problème sur la colonne A pour les doublons

la grille B5 a K14, lorsque j'effectue un clic sur la grille

sur la feuil2 : Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

bug sur la dernière ligne après la cellulule B14* qui quant à cette cellule si double-cliquer n'est pas comptabiliser et la valeur 0ne s'ajoute pas dans la colonne A de la feuille (çà c'est ok) mais lorsque, je dépasse de C14 à K14 les doublons s'affichent dans la colonne A, j'ai regardé sur le code :

'Dim DL As Integer
'Dim cell As Object
'If Not Intersect(Target, Range("B5:K13")) Is Nothing Then
 '   Cancel = True 'annule effet double-clic
 '   DL = Cells(Rows.Count, 1).End(xlUp).Row
 '   Range("A" & DL + 1) = Target.Value
'
  '      For Each cell In Range("B5:K13")
  '             Range("G3").Value = ActiveCell.Value
  '      Next cell
  '      Cancel = True
'End If
' ##################################################################
' ------------------------------------------------------------  29122020

 If Not Intersect(Target, [B5:k13]) Is Nothing Then
    Cancel = 1
    If [A2] = "" Then [A2] = Target
    If Application.CountIf([A:A], Target) = 0 Then Cells(Rows.Count, 1).End(xlUp)(2) = Target.Value
  Range("G3").Value = ActiveCell.Value
  ' on rend la couleur de fond jaune
  If Target.Interior.ColorIndex = 6 Then Target.Interior.ColorIndex = 2
  End If

' ##################################################################
'---------------------------------------------------------
' --------------Ordonc à voir  si
'Dim R As Range
 ' If Not Intersect(R, [B5:k14]) Is Nothing Then
 '   Cancel = 1
  '  If [A1] = "" Then [A1] = R
  '  If Application.CountIf([A:A], R) = 0 Then Cells(Rows.Count, 1).End(xlUp)(2) = R.Value
  ' ' Range("G3").Value = ActiveCell.Value
 ' End If
'------------------------------------------------------
' ##################################################################

 Dim DL1 As Integer
If Not Intersect(Target, Range("C14:K14")) Is Nothing Then
    Cancel = True 'annule effet double-clic
    DL1 = Cells(Rows.Count, 1).End(xlUp).Row
    Range("A" & DL1 + 1) = Target.Value
    '''     Range("A" & DL1 + 1) = Target.Value
            Dim cell1 As Object

        For Each cell1 In Range("B5:K13")

               Range("G3").Value = ActiveCell.Value
        Next cell1
        Cancel = True
 End If

aussi non, j'ai un peu avancé

Modifications et ajouts effectuées version 5.f :

  • affichage de message aléatoire
  • un petit chrono (stop, reset etc.)

ci-joint: v5.f

crdlt,

André

Bonjour,

c'est en rapport avec ta question initiale ?
Si non il faut démarrer un nouveau topic avec un titre en rapport.
Que ceux qui cherchent d'abord dans les réponses ne soient pas perdus.
eric

re,

ok d'accord, tu as raison, je vais créer un new topic

Rechercher des sujets similaires à "mfc colorise lorsque ligne affiche valeur"