Fichier ecrit si modification de la saisie, alors écrire en rouge

  • Initiateur de la discussion Initiateur de la discussion anthoYS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

anthoYS

XLDnaute Barbatruc
Bonjour,

J'ai un fichier ou j'ai saisi des données. Je souhaite que l'utilisateur auquel je vais envoyer le fichier, apporte des modifications, et si c'est le cas, qu'elles apparaissent en rouge, exemple si en C1 j'ai saisi "Kuy", et que l'utilisateur, écrit "Kyu", ce "Kyu" devra apparaître en rouge, lorsqu'il enregistrera ou avant, et qu'il me l'enverra par mail.

Biensur, je lui dirai d'accepter d'ouvrir le contenu si cela necessite une macro.

Par contre, autre détail, si dans une cellule j'ai écrit : "20H30 / 18h40" et que quand il me renvoie le fichier, je lis "20H30 / 18h50", c'est uniquement la partie modifié qui devra apparaître en rouge, soit le mot ou groupe de lettre dont une partie aura été modifié.


Soit :

Code:
20H30 / [COLOR="Red"]18h50[/COLOR]

Merci par avance.
 

Pièces jointes

Dernière édition:
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Bonjour,

Je ne suis pas très connaisseur sur le sujet mais cela ne me parait pas faisaible aussi faiclement. En effet, il n'y a pas d'évenement vba qui corresponde exactement à la modification d'une cellule.

Pour solutionner ça, je procèderai comme ceci :

1) Je verrouille la feuille sur laquelle les modifications doivent intervenir

2) J'oblige l'utilisateur à double cliquer sur la cellule qu'il veut modifier. J'utilise pour ça l'évenement "Worksheet_BeforeDoubleClick" qui détecte le double click

3) Une fois le double clique détecté, j'afficherai un inputbox demandant à l'utilisateur de saisir la nouvelle valeur qu'il compte donner à la cellule.

4) Je mémoriserai l'ancienne valeur dans une variable

5) J'enlève la protection de la feuille et je saisie la nouvelle valeur dans la cellule

6) Je fait une boucle comparant les deux chaînes de caractères (l'ancienne valeur de la cellule et la nouvelle valeur qu'il vient de saisir). Dès qu'il y a une différence entre les deux chaînes, je passe le caractère en rouge.

7) Je reprotège la feuille.

C'est la méthode la plus simple qui me vienne à l'esprit. N'hésite pas à faire signe si tu n'y arrives pas.

Bonne journée
 
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Bonjour aux intéréssés du fil,

Merci phlaurent55, seulement, si je modifie une partie du texte de la cellule, ça modifie le tout. Exemple pour "bla bla 9", si je modifie ainsi "bla DKD 4", alors sa me le colore ainsi :

Code:
"[COLOR="Red"]bla DKD 4[/COLOR]"

or j'attends ça :

Code:
"bla [COLOR="#ff0000"]DKD 4[/COLOR]"

Et ce qui est dommage, c'est qu'un double clic sur une cellule sans rien modifier va colorer tout le texte de la cellule en rouge alors que le texte doit rester dans sa couleur originale car aucune modification.

Mais ton travail est déjà bien.
Merci donc à toi (phlaurent55), et aussi à GeoTrouvePas.

Merci par avance.
 
Dernière édition:
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Bonjour,

Un début d'exemple avec quelques Sub qui permettent :

- de choisir la phase : Remplissage initial du tableau ou Modif des cellules sinon au remplissage, cela va "rougir"
- de ne pas changer de couleur si double-clic dans une cellule du tableau

Pour le "rougissement partiel du mot", il faudrait faire une routine d'analyse mais le problème est que je ne vois pas comment faire si le changement du contenu de la cellule peut être quelconque...

On peut, en effet, changer tout le mot, le changer partiellement de différentes manières (au début, à la fin, au milieu, quelques caractères parmi les autres ....), et en cas de suppression, il faut indiquer quoi ? ...

Cordialement
 

Pièces jointes

Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Re, mécano81,

et en cas de suppression, il faut indiquer quoi ? ...

Il faut colorer la cellule en rouge (plus la police puisqu'il n'y en a plus).

J'ai tenter certaines modifications, problème c'est que ça ne marche pas, ça colore même si je réécrit le même mot dans la même cellule, ou que je valide par entrée.

Ce que je souhaite c'est juste que si le mot est différent, ne serait-ce dans un groupe de mot, qu'il apparaisse en rouge.

Nouvel exemple :

Saisi première (admettons en B2):

Code:
Fruits rouges

Fichier qui m'est retourné (après modifications) :

Code:
Fruits [COLOR="Red"]verts[/COLOR]

Merci par avance encore.
 
Dernière édition:
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

D'accord, si ce sont des mots complet cela doit pouvoir se faire un peu plus facilement ... je regarde cela demain ...

Mais lorsque je parlais de suppression je voulais dire "suppression partielle de lettres". Maintenant, si l'on raisonne sur des mots entiers, que fait-on si un mot a disparu mais n'est pas remplacé? On colorie le fond de cellule en rouge et on laisse le mot inchangé en noir ou bien l'on met des XXX rouges à la place du mot manquant?

Cordialement
 
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

re,

je voulais dire "suppression partielle de lettres". Maintenant, si l'on raisonne sur des mots entiers, que fait-on si un mot a disparu mais n'est pas remplacé? On colorie le fond de cellule en rouge et on laisse le mot inchangé en noir ou bien l'on met des XXX rouges à la place du mot manquant?

En cas de suppression partielle des lettres, colorés le reste en rouge.

Exemple :

Code:
Klift

devient :

Code:
[COLOR="Red"]Klif[/COLOR]

Si un mot a disparu mais reste inchangé on fait comme tu l'a précisé, fond en rouge et le mot inchangé en noir.


Voilà.

Merci encore mécano41.
 
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Bonjour,

Voici un fichier qui permet de :

- mettre en rouge un mot qui a été modifié dans la cellule dans la cellule
- mettre en fond orange la cellule dans laquelle un mot a été supprimé ou ajouté

Je n'ai pas traité le cas où l'on supprime ou ajoute un mot et que l'on en modifie un autre dans la même cellule. Je n'ai pas traité non plus le cas ou l'on met plus d'un espace entre deux mots ...

Cordialement
 

Pièces jointes

Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Bonjour,

C'est excellent mécano41 ;

Est-ce que si je copie le code de la feuille, et "phase : Entrée de données" etc.
ça marchera sur n'importe quel autre fichier ?

Merci par avance.
 
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

En recopiant le code et les deux puces, normalement, pas de problème.

Il faudra aussi modifier : Range("B2:E13") dans le code (3 fois), pour l'adapter à ton tableau. Tu peux d'ailleurs donner un nom à ce Range ce qui évitera par la suite de le modifier 3 fois ... voire donner un nom à la plge du tableau dans la feuille et le récupérer dans le code ; ainsi, par la suite il suffira de nommer la plage du tableau (en gardant toujours le même nom), sans avoir besoin d'aller bricoler dans le code.

Cordialement

EDIT : il faut également renommer les deux puces...
 
Dernière édition:
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

...Sinon, je fait "A2:C10000" pour ne pas être embêter car nommer une plage d'accord, mais faut qu'elle soit dynamique...

Tu peux éventuellement la définir automatiquement en nommant, dans la feuille seulement, la première cellule en haut à gauche du tableau : Debut par ex. ensuite, tu fais :

Code:
Dim PlageAdefinir As Range
Set PlageAdefinir = Range("Debut").CurrentRegion

... mais il y a une condition : il faut être sûr que la première ligne et la première colonne au moins soient remplies...sinon, il faut chercher les longueurs de toutes les colonnes et de toutes les lignes et choisir le maxi...

Cordialement
 
Re : Fichier ecrit si modification de la saisie, alors écrire en rouge

Re,

Problème avec le code de la feuille ;



Que se passe t-il?

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim c As Long, i As Long
Dim PlageAdefinir As Range
Set PlageAdefinir = Range("plage_dyn").CurrentRegion
Cancel = True
With Target
    If .Column = 2 Then
        Cancel = True
        If .Comment Is Nothing Then
            .AddComment
            .Comment.Shape.Width = 121.5
            .Comment.Shape.Height = 29.75
        End If
        SendKeys "%im"
    End If
End With
With Target
    If .Column = 4 Then
        Cancel = True
        If .Comment Is Nothing Then
            .AddComment
            .Comment.Shape.Width = 121.5
            .Comment.Shape.Height = 59.75
        End If
        SendKeys "%im"
    End If
End With
If Not Intersect(Cible, Range(plage_dyn)) Is Nothing Then
    Range("A2").Select                              ' Empêche la modification de couleur si double-clic dans une cellule
End If
If Not Intersect(Cible, Range(plage_dyn)) Is Nothing Then
    MemChange = Cible.Value                     ' Met en mémoire la valeur avant modif.
End If ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour