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!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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?
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!
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?
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
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
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
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
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
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