Colorer une cellule lors d'une ressaisie

Résolu/Fermé
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014 - 7 juil. 2014 à 14:45
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014 - 11 juil. 2014 à 11:13
Bonjour,
J'ai un tableau de "budget annuel" sous Excel, avec des colonnes par mois et des rubriques par lignes, sur lequel figure des prévisions qui sont modifiées par des réalisations au fur et à mesure. Toutes les cellules doivent être ressaisies à un moment ou à un autre.
La MFC que je souhaiterais créer à pour but de visualiser par une couleur (bleu par exemple) les cellules qui sont passées de "prévision" à "réel" lors de la "nouvelle saisie". Je cherche donc cette formule que je ne connais pas et que je n'ai pas trouvée pour la rentrer dans ma règle.
J'espère avoir été assez clair dans l'exposé de ma demande. Merci par avance de votre aide.

12 réponses

via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
7 juil. 2014 à 15:12
Bonjour

Que veux tu faire exactement ?
Colorer les cellules dans lesquelles se trouvent le mot "réel" ?
Colorer la ligne entière où il y a "réel" ?
Colorer en fonction d'une date ou d'un montant ?

Un exemple allégé et anonymé de tion fichier posté sur cjoint.com serait le bienvenu ! (A indiquer ensuite ici le lien fourni)

Dans l'attente

Cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
7 juil. 2014 à 15:38
Sur mon tableau figure en début d'année toutes les prévisions, poste par poste. Ces prévisions sont remplacées par les réalisations, au fur et à mesure dans l'année.
Je souhaiterais donc colorer chacune des cellules lorsqu'il y a une nouvelle saisie, c'est à dire lorsque chaque nouvelle saisie correspondant au réel efface l'information précédente qui correspondait à la prévision.
Excusez ma question mais comment dois-je procéder pour vous joindre un fichier ?
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
7 juil. 2014 à 15:42
pour joindre le fichier tu vas sur le site https://www.cjoint.com/ et tu suis les instructions
puis tu copies le lien fourni et tu l'indiques ici dans un prochain message
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
7 juil. 2014 à 15:49
Merci pour ta réponse rapide.
Voici le lien pour le fichier.
https://www.cjoint.com/?3GhpUXFDZNl
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
7 juil. 2014 à 16:04
Ok mais désolé il n'y a pas de formule miracle ici !

Une formule a besoin soit d'une valeur soit d'une comparaison de valeurs entre elles
Tu modifies des données dans un tableau; rien ne peut indiquer si une modification est une rectification d'une erreur, l'entrée d'une nouvelle donnée, la modification d'une ancienne ... et ce qui doit déclencher une coloration

En fait il faudrait 2 tableaux :
Un tableau prévisionnel et un tableau réalisé et là par comparaison des cellules correspondantes des 2 tableaux tu pourrais faire colorer les cellules avec valeurs identiques, les cellules avec valeurs differentes (supérieures ou inférieures) etc

Cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
7 juil. 2014 à 17:44
Merci pour ta spontanéité et ta proposition avec 2 tableaux, mais je souhaite garder les données prévisions sur mon tableau tant que je n'ai pas le réel.
J'avais pensé pour la MFC à une formule qui prendrait pour référence la date de nouvelle saisie (le réel) qui comparerait (>) par rapport à la date d'entrée des prévisions. Je pourrais créer 2 tableaux des "dates de saisie prévisions" et "date de saisie du réel" qui pourraient être faits séparément. Je ne sais pas si c'est une bonne idée mais il me manque et surtout je ne connais pas les formules qui correspondraient à ces dates de saisie.
J'espère être suffisamment clair ?
Merci d'avance.
Bien Cordialement
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
7 juil. 2014 à 18:20
Re

Pas bien réalisable non plus, tu ne peux pas avoir une date par cellule, ça deviendrait une usine à gaz !
Que se passe-t-il quand un réel correspond à une prévision il n'y a pas de nouvelle saisie donc pas de modification donc pas de gestion possible par MFC

En fait si je comprends bien, tu voudrais une fois le tableau prévisionnel établi pouvoir valider une somme ou la modifier voire en ajouter et c'est cette somme qui sera la réelle et qui devrait alors apparaitre en couleur différente ?
Si c'est le cas cela peut se faire par une macro en VBA qui lors d'un double clic sur une cellule ouvrirai une fenetre qui demanderai soit de valider le chiffre déja existant soit de le modifier et qui après inscription modifierai la couleur de la cellule pour montrer qu'elle a été traitée

Si c'est ce que tu veux dis le moi et je te ferai la macro d'après ton fichier

Cdlmnt
0

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

Posez votre question
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 09:11
Merci encore pour l'intérêt que tu portes à ma demande.
Je pense que tu as bien compris mon souhait : colorer les cellules lorsqu'elles sont soit validées, soit modifiées (modification qui peut être faite à plusieurs reprises d'ailleurs) de façon à voir instantanément si le montant correspond à la prévision ou au réel.
Comme tu as déjà dû t'en rendre compte, je ne suis pas un pro et j'accepte ta proposition via une macro en VBA. Par contre je n'ai jamais fait de macro.... Mais suis demandeur pour et prêt à le faire, mais j'ai besoin d'une aide "pas à pas".
Tu m'as proposé de le faire sur mon fichier, celui que je t'ai passé n'est pas le bon.
Comment veux-tu que je procède ?

Pour ma gouverne, peux-tu me dire quelle est la formule qui correspond à une date de saisie "figée" dans une autre cellule.
Cdlt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 10:07
Bonjour Claudius

Exemple de la macro sur le fichier que tu m'as envoyé :

https://www.cjoint.com/?0Gikgqyo5Af

La cellule Q2 est la cellule de référence pour la couleur, je l'ai colorée en vert
Un doubleclic dans une cellule du tableau fait apparaitre la fenêtre donnant le choix de valider la valeur ou de la modifier avant de valider. Une fois validé elle prend la couleur de référence

Voilà ci-dessous la macro que tu peux mettre dans un autre fichier.
Pour ce faire :
Dans ce fichier ouvert, ouvrir l'éditeur VBA en faisant ALT + F11
Dans l'arborescence à gauche double cliquer sur la feuille dans laquelle doit s'appliquer la macro
Copier la macro ci-dessous et la coller dans la fenêtre blanche de droite de l'éditeur
Remplacer éventuellement Q2 par une autre adresse de cellule si tu changes la cellule de référence de la couleur
Fermer l'éditeur
La macro est opérationnelle

Recontactes moi, en MP si tu veux, si tu n'y arrives pas

Que veux tu dire par la formule qui correspond à une date de saisie "figée" dans une autre cellule.

Cdlmnt

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Def = Target.Value
ad = Target.Address
Message = "Valeur de la cellule actuelle (" & ad & ")" & Chr(10) & "à modifier si nécessaire ou valider simplement"
myvalue = InputBox(Message, "ENTREE montant réel", Def)
col = Range("Q2").Interior.ColorIndex
Range(ad).Value = myvalue
Range(ad).Interior.ColorIndex = col
End Sub
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 13:04
Re Bonjour VIA55,
Merci pour ton aide. J'ai suivi tes conseils et mis la macro dans mon fichier. Tout à l'air de fonctionner parfaitement. C'est super. Encore merci. J'ai juste un petit détail mais je suppose que c'est dans Excel. La couleur de la cellule lorsqu'elle est "validée" après le doubleClick est un peu différente de celle figurant dans la cellule de référence ??

Concernant la formule qui correspond à une date de saisie "figée" dans une autre cellule, je souhaitais connaître la formule correspondant à une date de saisie, mais une date fixe qui ne change pas à chaque ouverture du fichier. Par exemple je fais une saisie le "8 juillet à 12:05", je souhaite que ce soit cette information qui reste dans la cellule correspondant à l'heure de saisie et qu'il n'y ait pas de modif à postériori.

Encore merci pour ton aide.
Bien cordialement.
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 15:43
Oui pour la couleur j'ai eu le même problème; ça dépend des couleurs, je ne sais pas pourquoi !

Pour enregistrer automatiquement la date et l'heure à chaque ouverture du fichier :
1) Créer une colonne (par exemple la R) en mettant en R1 un titre comme Dernière modification
Mettre toute la colonne en Format Date avec affichage date et heure
2) ouvrir editeur VBA (ALT F11)
double cliquer sur This Workbook dans l'arborescence
copier la macro ci-dessous et la coller dans l'éditeur
Modifier si nécessaire le nom de la feuille et la référence de la colonne

Private Sub Workbook_Open()
Dim DernLigne As Long
DernLigne = Sheets("Feuil2").Range("R" & Rows.Count).End(xlUp).Row
Sheets("Feuil2").Range("R" & DernLigne + 1).Value = Now
End Sub

Bien cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 16:52
Merci encore VIA55.
Tu m'as fourni une macro pour enregistrer automatiquement la date et l'heure à chaque ouverture du fichier. Désolé j'ai dû mal exprimer mon souhait. Ce que j'aimerais c'est avoir dans une cellule la date et l'heure correspondant à la saisie dans une autre cellule.
Exemple : je saisis une valeur en A1, je voudrais avoir la date et l'heure en D1 et que cette date et heure soient figées tant qu'il n'y a pas de modif en A1. En fait, est-ce qu'il existe une formule à mettre en D1 qui corresponde à la date et heure de saisie de la donnée en A1 ?
D'avance merci.
Bien Cdlt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 17:11
OK j'avais mal compris !

la formule serait alors :
=SI(A1<>"";MAINTENANT();"")

Mais rien n'empêche d'écrire dans cette cellule ou de modifier la formule donc de perdre l'info

Pour proteger la cellule il faut proteger la cellule et la feuille :
1) Selectionner toutes les cellules (cellule en haut à gauche du A et audessus du 1)
clic droit Format de cellule Protection décocher Verrouillé
2) selectionner la cellule avec la formule clic droit Format de cellule et cocher Verrouillé
3) Onglet Révision Protéger la feuille et OK

Bien cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 17:41
Merci de ton aide, c'est sympa.
J'ai fait ce que tu m'as proposé et la date et l'heure s'affiche bien en D1 lorsque je saisis une valeur en A1.
J'ai fait une copie sur toute la colonne D mais lorsque je saisis une donnée en A2 la date et l'heure de D1 se met à jour, ainsi que toutes les dates et heures de la colonne D.
J'espère ne pas avoir commis d'erreur ???
Désolé de te remettre à contribution, et merci d'avance.
Bien Cdlt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 17:49
Non c'est moi qui ait fait une erreur, pas pensé qu'Excel allait bien sûr recalculer la formule à chaque modification sur la feuille !
Donc pour figer la date il faut passer par une macro qui inscrive la date et l'heure à chaque modif de A1 et de cette cellule uniquement

Voila la macro à mettre dans le worksheet de la feuille (ALt F11 puis selectionner feuilel dans arborescence) :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 1 Or Target.Column <> 1 Then Exit Sub
Range("D1").Value = Now
End Sub

La macro place la date et l'heure en D1 (à modifier si nécessaire)

Bien cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 18:23
Ok c'est parfait. Tu m'as beaucoup aidé et je t'en remercie.
Par contre la date et l'heure sont figée et ne change pas s'il y a une nouvelle saisie. En d'autres termes la date et l'heure ne correspondent pas à la dernière saisie dans la cellule.
Si je peux me permettre, est-ce que tu penses possible de développer ce principe de façon à avoir les mêmes infos sur un tableau d'une vingtaine de colonnes avec une cinquantaine de lignes, bien entendu sur un tableau adjacent d'autant de colonnes et lignes ??
Cad la date et heure de la saisie A1 en T1, B1 en U1, C1 en V1, A50 en T50, etc...
Merci
Bien Cdlt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 18:29
Chaque modification de A1 modifie D1 , es tu bien mode calcul automatique et non manuel ?

Je regarde pour un macro sur plusieurs colonnes et lignes
A suivre

Bien cdlmnt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 18:36
Voilà la macro

A mettre à la place de al précédente dans le worksheet de la feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 19 Then Exit Sub
x = Target.Row
y = Target.Column
ActiveSheet.Cells(x, y + 19).Value = Now
End Sub

Bien cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
8 juil. 2014 à 18:51
J'ai refait la macro, tout est Ok : la date et l'heure change bien lors de chaque modif. J'avais dû faire une bêtise la fois précédente. Excuse-moi.
Si on pouvait le faire sur plusieurs colonne et lignes ce serait parfait.
Merci beaucoup pour ton aide.
Bien Cdlt
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 18:55
Applique ma dernière macro de 18:36 tu as pour 19 colonnes et une infinité de lignes

Bien cdlmnt
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
8 juil. 2014 à 20:08
Bonjour à tous,

Oui pour la couleur j'ai eu le même problème; ça dépend des couleurs, je ne sais pas pourquoi !
Parce que tu travailles à l'ancienne avec colorindex.
Sur 2010 on a en plus des 'thèmes'
Voilà ce que ça donne en vba :
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent4
    .TintAndShade = 0.599993896298105
    .PatternTintAndShade = 0
End With

Oui, c'est ch... ;-)

eric
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
8 juil. 2014 à 20:45
Bonsoir Eric

Merci pour l'info
mais je suis en 2007 !

Cdlmnt
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
8 juil. 2014 à 21:41
Peut-être depuis 2007 (?)
Quoiqu'il en soit une fois ouvert sur 2010, si l'utilisateur n'utilise pas les couleurs connues dans 2003 il y a ce défaut de non compatibilité.

eric
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
9 juil. 2014 à 08:12
Bonjour VIA55,
Merci. J'applique ta macro et je reviens vers toi. Encore merci pour ta disponibilité.
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
10 juil. 2014 à 13:10
Merci pour ta proposition de .color au lieu de .colorindex. J'ai compris qu'il fallait changer cela dans là macro de Via55 du 8 juil. 2014 à 10:07. C'est ce que j'ai fait, mais mes cellules modifiées deviennent "noires" et ne correspondent donc plus à la couleur de la cellule de référence.
Ai-je commis une erreur ??
Merci par avance de votre aide.
Bien Cdlt
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
Modifié par eriiic le 10/07/2014 à 13:21
Sans savoir ce que tu as mis je dirais peut-être.
Prend l'habituide de déposer un fichier qu'on sache où tu en es.
Essaie avec :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Def = Target.Value
    ad = Target.Address
    Message = "Valeur de la cellule actuelle (" & ad & ")" & Chr(10) & "à modifier si necessaire ou valider simplement"
    myvalue = InputBox(Message, "ENTREE montant réel", Def)
    col = Range("Q2").Interior.Color
    Range(ad).Value = myvalue
    Range(ad).Interior.Color = col
End Sub

Je suis parti de la macro du fichier. S'il y a eu des modif ultérieures reporte-les. Je n'ai pas tout lu.

eric
0
via55 Messages postés 14509 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 2 janvier 2025 2 739
10 juil. 2014 à 14:20
Merci Eric

Tu as raison il faut employer Color et non Colorindex, j'aurai appris quelque chose aujourd'hui !

à Claudius

Si tes cellules deviennent noires c'est sans doute que tu as changé colorindex pour color dans la dernière ligne de la macro ligne 8) mais que tu ne l'as pas changé dans la ligne 6 (ou inversement)

Cdlmnt
0
claudius47 Messages postés 14 Date d'inscription lundi 7 juillet 2014 Statut Membre Dernière intervention 11 juillet 2014
11 juil. 2014 à 11:13
Merci à Eriiic et Via55, tout est rentré dans l'ordre avec la dernière macro d'Eriiic.
Pour Via 55, j'avais effectivement changé uniquement la ligne 8 et pas la 6...
j'ai maintenant exactement ce dont j'avais besoin. J'en ai rêvé, vous l'avez fait !!!
J'ai apprécié vos compétences et disponibilités et je vous en remercie beaucoup.
Bien cordialement.
0