Cellule coloriée si reactivé
Résolueric2027 -
par avance merci
Éric
- Cellule coloriée si reactivé
- Excel cellule couleur si condition texte - Guide
- Proteger cellule excel - Guide
- Excel somme si couleur cellule - Guide
- Aller à la ligne dans une cellule excel - Guide
- Si cellule contient texte alors ✓ - Forum Excel
99 réponses
Le problème posé est que pour colorer une cellule en rouge après deux modifications de son contenu, une cellule ne peut pas tester son propre contenu et influencer son format via une simple formule.
La solution générale consiste à sauvegarder le contenu précédent et à compter les modifications à l’aide de deux cellules de sauvegarde ou d’un compteur, afin de déterminer si une deuxième modification a eu lieu.
Comme une formule seule ne peut effectuer ces sauvegardes ou compter les changements, il faut recourir à une macro qui effectue les sauvegardes et le comptage et qui déclenche le test via un événement ou manuellement.
Des approches alternatives évoquées prévoient d’utiliser des tests conditionnels (IF/ET/OFFSET) couplés à des calculs de somme pour piloter le déclenchement, mais nécessitent tout de même une infrastructure de suivi des modifications.
La question de la teinte, rouge ou autre, est facile à résoudre par utilisation d'un format conditionnel de la cellule ( dépendant du résultat d'un test ).
Par contre le problème du test lui même est tout autre :
Une cellule ne peut tester son propre contenu, car elle contient alors la formule de test, et ne peut donc avoir d'autre contenu propre à soumettre au test.
Tu ne peux résoudre le problème qu'en réalisant sous Excel ce que tu ferais toi même "à la main"
Pour savoir si une cellule est modifiée, tu dois comparer son contenu au précédent contenu, que tu dois donc avoir sauvegardé. Pour savoir si elle subit une deuxième modification, tu dois savoir qu'il y en a déjà eu une autre, donc avoir modifié un compteur, ou avoir fait une deuxième sauvegarde différente de la première.
Comme la modification du contenu d'une cellule ( modification du compteur, ou sauvegarde du contenu dans une autre cellule ) ne peut PAS être fait par une formule, seule une "macro" pouvant le faire à la place de l'utilisateur ...
=> il te faut donc deux cellules de sauvegarde, ou une sauvegarde et un compteur, plus une cellule effectuant le test, ET une macro convenable effectuant le comptage et la/les sauvegardes en fonction de ce qu'elle "voit".
Le problème de la macro est que tu dois la lancer à la main ( ou par clic sur un bouton convenablement configuré ), ou bien elle ne peut s'effectuer automatiquement que lors d'événements prédéfinis ( ouverture ou fermeture du document, par exemple ).
Selon le choix fait, tu pourrais ne savoir tester qu'une seule modif faite pendant que le document est ouvert .
En final, la cellule de test examine les résultats et donne l'information nécessaire au format conditionnel.
Donc ton problème parait simple, mais ne l'est pas tant que cela ...
Mais c'est sûrement faisable avec un peu de patience ...
Et d'autres solutions sont sans doute possibles, sans pouvoir aller au delà des limites d'une simple formule ..
A+
Nyctaclope
merci de t'être attardé et m'avoir répondu aussi vite mais en macro je suis archi nul, je n'y comprends rien et pourtant j'essaie, pourrais tu m'orienter et m'aider à en créer une, si c le cas, te faut il une base ?
par avance merci
Éric
Je ne pourrai pas t'aider beaucoup, car c'est un travail assez important, et je n'aurai pas beaucoup de temps.
En plus, ma version Excel est ancienne, et les infos que je te donnerai risquent d'être obsolètes. Et maintenant les macros se rédigent en Visual Basic, que j'ai un peu oublié ..
Je te prépare quand même l'algorithme ( structure logique ) des macros nécessaires , et je te le poste sans doute demain ..
Et je demande à Raymond Pentier ( il adore intervenir pour Excel ) s'il peut te donner un coup de main ...
A+
Nyctaclope
eriiic, cousinhub29, michel_m, gbinforme, Mike-31, le Pingou
et quelques autres ...
que je salue tous !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionIl faudrait préciser combien de cellules sont concernées.
Une ? Une colonne ? Sur plusieurs feuilles ?
Et à l'ouverture du fichier faut-il tenir compte d'un changement qui aurait eu lieu à une précédente session ?
Eventuellement mettre le fichier exemple sur cijoint.fr et coller ici le lien fourni.
eric
Bonjour tout le monde,
En supposant que tu veuilles surveiller la colonne B et pour faire simple je te conseille d'utiliser une colonne adjacente exemple la C qui pourra être masquée
Clic droit sur l'onglet de la feuille concernée/Visualiser le code et coller ce code, qui dès qu'une valeur sera changée deux fois et plus en B la cellule B passera en rouge.
Mais il faudrait peut être prévoir un resset (remise à zéro)
Dans le code j'ai intégré une gestion d'erreur
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect([B:B], Target) Is Nothing Then
Target.Offset(0, 1) = Target.Offset(0, 1) + 1
If Target.Offset(0, 1) >= 2 Then
Target.Interior.ColorIndex = 3
End If
End If
End Sub
j'ai essayé, cela fonctionne, c cool, mais il faudrait que ce soit lors de la correction c a d je mets "15 dans la cellule b9", cela reste blanc mais lorsque je fais une correction dans "b9", là, cela apparait en rouge ,
est il possible lorsque j'inscris des données en colonne f, g, h que cela reste bloqué, comme personne ne pourrait y toucher
merci encore, vous me sortez d'une galère, un truc de ouf.
De plus, j'ai essayé de faire fonctionner ta macro dans les colonnes D, F, H mais ça ne fonctionne, pourrais m'indiquer le pourquoi ?
par avance merci de ton aide
Éric
Pour bloquer les colonnes F, G et H il n'y a pas de problème et plusieurs possibilités.
quelles sont les cellules accessibles
une fois renseignée tu veux les bloquer difinitivement ou accessible avec un mot de passe qui te sera réservé.
Pour comprendre ton tableau il serait souhaitable d'avoir un modèle de fichier sans notes confidentielles mais avec des annotations expliquatives que tu peux joindre avec ce lien
https://www.cjoint.com/
peux tu expliquer le fonctionnement et expliquer ta phrase:
mais il faudrait que ce soit lors de la correction c a d je mets "15 dans la cellule b9", cela reste blanc mais lorsque je fais une correction dans "b9", là, cela apparait en rouge
les valeurs en B sont saisies manuellement ou le résultat de C, A, D
et en D, F et H les valeurs ont saisies comment ou le résultat de quelle combinaison
pour les colonnes à bloquer, ce serait toute les cellules, et accessibles avec un mot de passe
pour cette phrase mais "il faudrait que ce soit lors de la correction c a d je mets "15 dans la cellule b9", cela reste blanc mais lorsque je fais une correction dans "b9", là, cela apparait en rouge", j'ai trouvé la solution.
pour cette phrase "et en D, F et H les valeurs ont saisies comment ou le résultat de quelle combinaison ", j'ai essayé de compléter ta macro en y incorporant les colonnes D, F ,H et sans succès, c'est à dire que les cellules ne se mettent en rouge. donc c'est vraiment compliqué de créer des macro.
je t"envois un fichier excel sur cjoint
Mais en D, F et H que veux tu faire mettre ces cellule en rouge si B change deux fois ou veux tu les soumettre aux même conditions que B, c'est à dire si une valeur change deux fois en D elle devient rouge idem pour F et H
sur les 4 colonnes est il possible de mettre la même macro que celle que tu m'as créé en colonne B, je n'y arrive pas
Si je comprends bien, tu veux que les valeurs des colonnes B, D, F et H passe en rouge à la deuxième modification, c'est cela !!!
Ton tableau se termine à quelle colonne !!!
mon tableau se fini en colonne H pour les chiffres et les 2 suivantes I, J pour les textes.
merci
Éric
ok c cool, un dernier truc que j'ai essayé et qui ne fonctionne comme je veux, en b40, j'ai fait une mfc, qui dit que au delà de 10 la cellule se met noir avec chiffre blanc, mais il ne veut pas clignoter sur le 10 pour avertir qu'il faut arrêter de rentrer des nombres, j'ai beau ajouter une autre mfc avec des données que j'essaye de comprendre mais j'ai l'impression que l'on ne peut pas faire ce genre de programme en mfc, y a t 'il une solution ?
merci pour tout
Éric
Je ne t'ai pas oublié, manque de temps. Je te prépare tout cela rapidement.
le mot de passe pour la macro, tu veux dire protéger le module qui contient la macro pour contrôler les accès ou les limiter !
Voila, voila, recupère le fichier avec ce lien, regarde deux possibilités sur les deux feuilles
https://www.cjoint.com/?0kgpGAQGEVT
pour protéger le code VBA, clic droit sur l'onglet de feuille et Visualiser le code ou touche Alt et touche de fonction F11
Outils/Propriétés du VBAProjet/onglet Protection, coche verrouiller le projet pour affichage et saisi un mot de passe que tu confirmes (ATTENTION DE NE PAS L'OUBLIER)