OVH Cloud OVH Cloud

Historique

4 réponses
Avatar
pa
Bonjour,
Voici le problème:
J'ai une base de donnée Excel que je remplis avec une macro qui inscrit
entre autre la date pour chaque nouvelle saisie.
Il y a environ 10 colonnes dans la base. Parmis ces 10 colonnes, il y en a
deux qui doivent être mises a jour régulièrement: la date et un commentaire.
Maintenant, j'aimerais créer un historique sur une feuille qui inscrirait au
fur et à mesure les modifications faites dans ces 2 colonnes lorsque les
remets a jour. Autrement dit, chaque fois que je modifie la date d'une ligne
et la case commentaire, il faut que l'ancie commentaire et l'ancienne date
soient retranscrit dans l'historique.
Y'a t'il une solution simple a cela?
Merci beaucoup de votre aide!

y'a t'il une solution simple a cela?

4 réponses

Avatar
Trirème
Bonjour pa

Pas de réponse à ce jour... je me lance.
Pour historiser les changements effectués par macro dans 2 colonnes,
j'imagine que la macro connaît les numéros de colonne en question et
qu'avant d'écrire dans une cellule tu testes le contenu éventuellement
présent.
AncienContenu = Range(LaCelluleAChanger).Value
Tu disposes alors de variables 'NuméroDeColonne', 'AncienContenu' et
'NouveauContenu'.

Pour recopier les anciennes et nouvelles valeurs dans un onglet nommé
'Log' tu peux ajouter ceci dans ton code :
------------
NB
L'onglet 'Log' doit exister et peut être masqué. Il doit comporter les
entêtes suivants : Horodatage Ancienne date Nouvelle date Ancien
commentaire Nouveau commentaire.
La colonne Horodatage peut être formatée jj/mm/aaaa hh:mm:ss
------------

DerCelLog = Worksheets("Log").Range("A65536").End(xlUp).Row + 1
Sheets("Log").Range("A" & DerCelLog) = Now
Select Case NuméroDeColonne ' Adapter avec ta variable
Case 1 ' Adapter ce 'Case x' avec l'un des 2 numéros de colonne à
surveiller
Sheets("Log").Range("B" & DerCelLog) = AncienContenu
Sheets("Log").Range("C" & DerCelLog) = NouveauContenu
Case 2 ' Adapter ce 'Case x' avec l'un des 2 numéros de colonne à
surveiller
Sheets("Log").Range("D" & DerCelLog) = AncienContenu
Sheets("Log").Range("E" & DerCelLog) = NouveauContenu
End Select

Cordialement
Trirème

Bonjour,
Voici le problème:
J'ai une base de donnée Excel que je remplis avec une macro qui inscrit
entre autre la date pour chaque nouvelle saisie.
Il y a environ 10 colonnes dans la base. Parmis ces 10 colonnes, il y en a
deux qui doivent être mises a jour régulièrement: la date et un commentaire.
Maintenant, j'aimerais créer un historique sur une feuille qui inscrirait au
fur et à mesure les modifications faites dans ces 2 colonnes lorsque les
remets a jour. Autrement dit, chaque fois que je modifie la date d'une ligne
et la case commentaire, il faut que l'ancie commentaire et l'ancienne date
soient retranscrit dans l'historique.
Y'a t'il une solution simple a cela?
Merci beaucoup de votre aide!

y'a t'il une solution simple a cela?



Avatar
JB
Bonjour,

Mémorise l'historique des cellules modifiées sur un onglet (nommé
Espion)

http://cjoint.com/?fAn1nilRkn

Private Sub Worksheet_Change(ByVal Target As Range)
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
Sheets("espion").Cells(temp, 1) = Target.Address
Sheets("espion").Cells(temp, 2) = Now
Sheets("espion").Cells(temp, 3) = Target
End Sub

Cordialement JB
Avatar
JB
Exemple en modifiant le champ commentaire

http://www.excelabo.net/moteurs/compteclic.php?nom=jb-historiquemodifications

Cordialement JB
Avatar
Trirème
Bonjour JB,
Il me semble que 'pa' souhaite mémoriser les anciennes valeurs plutôt
que les nouvelles. De plus , il agit par macro...
(J'y suis parvenu, mais me suis aperçu ensuite que les modifs étaient
faites par macro plutôt qu'en direct)

Il n'y a bien sûr qu'un décalage de temps entre les 2 évènements.

Cordialement
Trirème

Bonjour,

Mémorise l'historique des cellules modifiées sur un onglet (nommé
Espion)

http://cjoint.com/?fAn1nilRkn

Private Sub Worksheet_Change(ByVal Target As Range)
temp = Application.CountA(Sheets("espion").Range("a:a")) + 1
Sheets("espion").Cells(temp, 1) = Target.Address
Sheets("espion").Cells(temp, 2) = Now
Sheets("espion").Cells(temp, 3) = Target
End Sub

Cordialement JB