Compiler tous les changements de valeurs d'une cellule dans une autre
Bonjour à tous,
Nous sommes en train de créer un tableau pour le suivi de nos interventions. Afin de garder une trace de l'ordre dans lequel nous effectuons les actions, je cherche à créer une macro qui va compiler tous les changements effectués sur une cellule dans une cellule voisine. Voici un exemple :
Nous avons codifié toutes nos actions :
AA = Prise de contacte
AB = Rendez-vous fixé
BA = Etablissement de devis
BB = Etablissement de facture
CA = Dossier classé
Etc.
Comme les actions peuvent s'effectuer dans différents ordres, nous voulu pouvoir suivre le cheminement d'actions. Je cherche donc une macro qui copierait dans une cellule les nouvelles valeurs à chaque changement.
Situation type :
- En A1 j'écris le statut AB. J'aimerais qu'à ce moment en B1, il soit recopié AB
- Ensuite la valeur en A1 est changée en BB. J'aimerais avoir en B1 : AB - BB.
- Si après je mets en A1 la valeur CA, j'aimerais retrouver en B1: AB - BB - CA.
Je vais avoir une multitude de ligne, (une pour chaque intervention). J'aimerais que l'historique se crée sur les lignes, mais toujours en même position (A1 inscrit en B1, A2 en B2, A3 en B3, etc.)
J'espère avoir été suffisamment claire. Je reste disponible pour tout complément d'information.
Merci d'avance pour le temps que vous me consacrez.
Cordialement
AxelR
Hello,
Dans un évènement de feuille change comme ci-dessous (changement en colonne A) :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Compilation As String
If Not Application.Intersect(Target, Range("A:A")) Is Nothing _
And Target.Count = 1 Then
Compilation = IIf(Target.Offset(0, 1).Value <> "", Target.Offset(0, 1) & "-" & Target.Value, Target.Value)
Target.Offset(0, 1) = Compilation
End If
End SubMerci bien Rag02700,
A la lecture du code je vois qu'on est proche de se que je veux faire, mais malheureusement je n'arrive pas faire fonctionner la macro.
Je copie ton code dans un module sur ma feuille de travail, mais quand je fais une action rien ne se passe. C'est surement tout bête, mais je dois dire que je n'ai pas l'habitude de travail avec des macros qui sont toujours actives en arrière-plan et qui se lancent en fonction des actions...
Aussi, dans ton code, je ne comprends pas dans quelle cellule il va créer mon historique. Comment je fais si je veux par exemple qu'il créer l'historique en C1 pour une valeur changée en A1 ?
Merci d'avance pour le temps que tu me consacres.
Cordialement
AxelR
Hello,
Pour ajouter mon code merci de lire : https://www.excel-pratique.com/fr/vba/evenements_feuille
Comment je fais si je veux par exemple qu'il créer l'historique en C1 pour une valeur changée en A1 ?
Tiens c'est marrant j'avais juré que le besoin était de mettre le résultat dans la cellule de droite
J'aimerais que l'historique se crée sur les lignes, mais toujours en même position (A1 inscrit en B1, A2 en B2, A3 en B3, etc.)
Ah bah oui tiens j'avais raison, AxelR change vite d'avis
pour mettre le résultat dans la colonne C, faire ce changement :
Target.Offset(0, 1) = Compilationen
Target.Offset(0, 2) = CompilationSi tu veux mettre ton résultat en ZZ1tu mets :
Target.Offset(0, 250) = CompilationBonjour,
Merci beaucoup pour tes réponses et ta solution qui fonctionne bien.
En effet, tu avais bien compris, dans ma question, les exemples laissaient sous-entendre une action dans la cellule de droite. Si je me suis permis de compléter ma demande c'est pour comprendre le fonctionnement de la macro. Je suis maintenant moins ignorant et comprends donc que nous demandons une action par déplacement d'un nombre de case verticalement et horizontalement.
Ma volonté de chercher à comprendre et surtout mon manque de clarté dans ma demande laissaient apparemment sous-entendre à un "changement d'avis rapide", je te présente donc mes excuse pour cela.
Merci encore pour ta contribution et bonne semaine à toi.
AxelR