Deux cellules consécutives de même couleur

Résolu/Fermé
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014 - Modifié par pijaku le 28/10/2014 à 08:04
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014 - 30 oct. 2014 à 14:10
Bonjour,

Je souhaiterais qu'un message pop up s'affiche lorsque le résultat de deux cellules consécutives (Ex: C1 et D1) sont de la même couleur de fond (ou jaune ou rouge)
En effet, lorsque C1 < a une valeur X, le fond de la cellule se colore en rouge (mise en forme conditionnelle, si limite dépassée) ou en jaune (si limite presque atteinte) ou verte (si valeur conforme).

Après plusieurs lecture et compilation sur les forums, j'en suis arrivée à ce texte:

Sub color ()
Nbj = 0 NbR=0
For each cellule in Range ("G31: AZZ31")
If cellule.interior.colorIndex = 3 Then Msgbox "Dérives importantes"
End if
For each cellule in range ("G31:AZZ31")
If cellule.interior.colorIndex= 6 Then Msgbox "Surveillance". 
End if
End Sub


A noter que dans les cellules de la ligne 31 se trouve le résultat d'une moyenne de 8 cellules précédentes. La macro ne doit s'exécuter que sur le résultat définitif (une fois les 8 valeurs entrés et le calcul de la moyenne effectué).
J'hésite donc entre worksheet_activate ou worksheet_calculate?
Merci pour votre aide.

9 réponses

Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
27 oct. 2014 à 22:05
Bonjour,
Pas facile de comprendre ce que vous désirez et où est le problème. En plus votre procédure ne peut pas fonctionner par manque d'instruction [Next cellule...].
Pouvez-vous apporter un éclaircissement ?

0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 28/10/2014 à 07:21
Bonjour,

ça serait plutôt sur .change des 8x1370 cellules de saisie.
Mais tu ne peux pas tester la couleur mise par une MFC avec .interior.colorindex, c'est beaucoup plus complexe que ça. Ré-utilise plutôt le test de la MFC. par exemple If cellule <x and ...

eric

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
28 oct. 2014 à 11:27
Je peux également reprendre les règles de la MFC mais ma volonté première est de faire apparaître une fenêtre pop up lorsque deux cellules consécutives ne respectent pas les règles de MFC. Deux valeurs jaunes signifient "début de dérives process" et une cellule rouge signifie "dérive de process".
J'ai donc pensé que faire intervenir la couleur de fond de la cellule était plus judicieuse et plus rapide dans mon cas! :s
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 28/10/2014 à 14:04
non, ce n'est plus judicieux ni plus rapide.
Macro pour analyser une MFC : 50 à 100 lignes, reprendre ton test MFC : 1 ligne...
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
28 oct. 2014 à 14:08
Il existe donc dans la fonction MFC la possibilité de mettre un message pop up?
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
28 oct. 2014 à 11:23
Merci pour vos réponses.
Je vous ai joint (enfin j'ai tenté, j'espère que cela fonctionne) le fichier exemple.
Merci d'avance pour vos aides.


https://www.cjoint.com/?0JClzV3zHqc
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 28/10/2014 à 16:50
Il existe donc dans la fonction MFC la possibilité de mettre un message pop up?
Non plus. Je parlais de reprendre le test MFC dans une macro.

Vu que tu n'avais pas précisé j'ai prévu que ça fonctionne sur un collé sur plusieurs colonnes. Ce qui complique un peu mais je pense que tu t'y retrouvera et que tu comprendras le principe.
Dans ce cas tu peux avoir les 2 messages dans la msgbox.
Tu peux tester en revalidant tes saisies.
A tester, Private Sub Worksheet_Change :
https://www.cjoint.com/?DJCq05xC3og

eric

edit : fichier modifié, je viens de faire le lien avec ton autre fil.
Date et heure ne se mettent que si vides. Préciser si tu préfères une mise à jour à chaque saisie.
Si ok ne pas oublier de mettre en résolu l'autre fil également.

En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
0
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
28 oct. 2014 à 16:54
Bonjour eriiic, toujours aussi rapide, merci et amicales salutations
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 28/10/2014 à 17:45
Salut le pingou :-)
Rapide, rapide, ça date d'hier... ;-)

@laly :
JAMAIS TU NE DESACTIVES TES PROCEDURE ONKEY OU ONTIME POUR NE PAS EMM...BETER L'UTILISATEUR ????
Parce que ton fichier qui se rouvre dès qu'on tape Entrée dans excel ça pète les c....
Quand on fait un truc comme ça le minimum est de rendre un environnement propre à l'utilisateur.
Et sur un forum tu peux les mettre en commentaires puisqu'ils n'ont rien à voir avec la question, ou prévenir !
Ajouter :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "~", ""
    Application.OnKey "{enter}", ""
    Application.OnKey "{TAB}", ""
End Sub

eric
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
29 oct. 2014 à 10:36
Oups... je suis désolée Eriiic :s mais ce fichier Excel avec les macros n'a pas été créé par moi mais par mon prédécesseur; je cherche uniquement à l'améliorer avec de nouvelles fonctions.
Que faut-il que je supprime dans la procédure pour "rendre l'environnement propre à l'utilisateur"?

Merci pour ton aide.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
Modifié par eriiic le 29/10/2014 à 11:42
Bonjour,

au minimum ajoute dans thisworkbook les 5 lignes que je t'ai mise.
Au mieux supprime :
Application.OnKey "~", "dateheure"
Application.OnKey "{enter}", "dateheure"
Application.OnKey "{TAB}", "showuserform"
et fait l'appel tes proc d'une autre façon.

Surtout quand on voit en plus que dateheure, qui peut être appelée de n'importe où dans n'importe quel classeur modifie la feuille active sans aucun contrôle de qui elle est. Une dangereuse abomination !
Idem pour Workbook_SheetBeforeRightClick qui appelle chgtType sans même contrôler si la feuille est concernée...
Bref, tout ce qui est dans this_workbook est plus que douteux.

Quoiqu'il en soit toutes les actions qui modifient l'environnement de l'utilisateur doivent être mises en commentaire lorsque tu postes sur un forum
Et si elles sont nécessaires pour la question tu expliques, et l'intervenant saura bien les activer pour tester s'il le veut

eric
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
29 oct. 2014 à 14:45
Eric, merci pour ton aide. :D
Si je peux encore abusé un peu de ta patience et de ta science!
Finalement, il faudra qu'apparaisse dans la formule VBA non pas Cells(31, col) mais moyenne de cells(G13:G20) par exemple... (applicable sur l'ensemble du fichier)
Le message apparaît à chaque fois que tu tapes une valeur dans la plage (G13:G20)...
Merci pour ton retour.
0

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

Posez votre question
Le Pingou Messages postés 12048 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 26 avril 2024 1 427
Modifié par Le Pingou le 30/10/2014 à 10:25
Bonjour,
Juste au passage, comment on sait que le résultat est définitif.... Si par exemple il va encore corrigé une ou plusieurs valeurs ?


Salutations.
Le Pingou
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
30 oct. 2014 à 10:47
On considèrera que le résultat est définitif une fois que la 8ème cellule est entrée.
Peu importe s'il corrige une ou plusieurs valeurs par la suite.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
30 oct. 2014 à 10:57
Pas bonjour non plus,
Bonjour le pingou,

Si la moyenne n'est valable que si les 8 saisies sont faites pourquoi ne mets-tu pas en formule plutôt :
=SI(NBVAL(K13:K20)=8;MOYENNE(K13:K20);NA()) ?


Sinon remplace :
If IsError(Cells(31, Target.Column)) Then Exit Sub
par :
If Application.CountA(Cells(13, Target.Column).Resize(8)) < 8 Then Exit Sub

Si tu ne changes pas tes formules il restera une erreur lorsque tes formules en 24:30 retournent #N/A. Tu n'as pas dit ce que tu voulais. Dans quels cas c'est normal ou pas ? Rien ou alerte ?

eric

0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
30 oct. 2014 à 11:26
Excusez mon impolitesse f :$
Bonjour à tous... (Vraiment désolée)
0
Laly.LAREUNION Messages postés 13 Date d'inscription vendredi 17 octobre 2014 Statut Membre Dernière intervention 30 octobre 2014
30 oct. 2014 à 14:10
Merci Eric, avec ta première solution de remplacer =SI(NBVAL(K13:K20)=8;MOYENNE(K13:K20);NA()) dans la formule, j'obtiens le résultat souhaité.

UN TRES GRAND MERCI pour vos aides respectives. :)
0