OVH Cloud OVH Cloud

Conserver un log des modifications

29 réponses
Avatar
Apitos
Bonjour,

J'aimerais avoir dans une deuxième feuille "Log", l'historique des modifications apportées dans la feuille "BDD".

En PJ, un exemple primaire de ce que j'aimerais obtenir.

https://www.cjoint.com/c/KBztpPTEyMr

Les modifications devront être enregistrées dans la feuille "Log" en même temps que la saisie des nouvelles données dans la feuille "BDD".

Par exemple, je voudrais modifier l'adresse "Adr1" et la remplacer par "Adr2".

Par conséquent, "Adr1" doit être inscrit dans la feuille 2 "Log" et devant lui, dans le tableau, ce qui a été modifié Í  savoir "Adr2", la date de la modification et la personne qui a effectué cette modification.

Merci d'avance.

10 réponses

1 2 3
Avatar
Apitos
**** Cela fait référence au nom du profil défini sur l'ordinateur de
l'usager. Environ("UserName")

J'ai rajouté un système de pour se loguer au classeur.
Dans ton classeur, fais la mise en page de chacune des feuilles avant
d'ajouter le code contenu dans le ThisWorkbook.


Oui, j'ai remarqué que si j'apporte des modifications sur une autre feuille ("Paramètres", dans l'exemple en PJ), elles seront reportées sur la feuille "Log".
- Je ne peux toujours pas supprimé une ligne complète.
**** Dans toutes les feuilles sauf "Log", il est impossible de
sélectionner plus d'une cellule. Si tu préfères, on peut modifier le
code afin de sélectionner toutes les cellules que tu veux, mais
l'enregistrement des modifications se fera seulement si UNE cellule
est sélectionnée et modifiée.

As-tu une idée de la manière dont je peux enregistrer les modifications, si je supprime une ligne entière ?
Parce qu'Í  chaque fois que je sélectionne une ligne, il y a une erreur déclenchée sur cette ligne :
'-----
If Target.Value <> MaVar Then
'-----
- Pour les usagers, il doit s'agir des noms des agents agissant sur ce fichier, et non pas le nom du compte Windows.
**** Excel ne peut pas deviner le nom de la personne qui est assis
devant l'ordinateur. Pendant que le fichier est ouvert, plusieurs
personnes peuvent apporter des modifications au fichier. IL n'y a
pas d'autres moyens d'automatiser cela que de demander Í  l'usager
de s'identifier Í  chaque modification. Ce dernier est libre
d'écrire ce qu'il veut...

Et c'est ce que j'ai fait, en ajoutant un système de connexion au classeur.
Cependant, je ne peux pas enregistrer le nom d'utilisateur dans la colonne :
"Nom du profil utilisateur"
De plus, les en-têtes de colonne ne sont pas correctement enregistrés, j'ai plutÍ´t l'identifiant de colonne (A, B ou C).
Fichier joint :
https://www.cjoint.com/c/KBAwHoLDeU4
Avatar
MichD
Voir le fichier : https://www.cjoint.com/c/KBBcfDYagqj
MichD
Avatar
Apitos
Bonjour MichD,
- Avant la suppression d'une ligne, j'ai pu ajouté LA SAUVEGARDE des ses données. Ainsi la mention "Suppression" est ajoutée dans la colonne "Nouvelle valeur".
- Pour la saisie d'une nouvelle ligne, j'ai ajouté la mention "Création" dans la colonne "Ancienne valeur".
Ne connaissant pas la raison, lorsque j'ouvre le classeur, la feuille "Accueil" n'est pas affichée et par conséquent, il n'y a aucune connexion au classeur. L'ouverture se fait directement sur les feuilles visibles.
Et je pense que cela est causé par un événement désactivé de feuille et c'est lui qui est Í  l'origine de tout cela ?
https://www.cjoint.com/c/KBBx51kBKlj
Avatar
MichD
Ne connaissant pas la raison, lorsque j'ouvre le classeur, la feuille "Accueil" n'est pas affichée et par conséquent, il n'y a aucune connexion au classeur. L'ouverture se fait directement sur les feuilles visibles.
Et je pense que cela est causé par un événement désactivé de feuille et c'est lui qui est Í  l'origine de tout cela ?

Bonjour,
Si cela t'arrive encore, tu peux faire ceci. Exécute cette macro qui est
déjÍ  dans ton classeur :
Pour ce faire, il s'agit d'enlever le paramètre "OK as Boolean" pour
afficher toutes les feuilles. Tu replaces ce paramètre immédiatement après.
Tu choisis la feuille "Accueil" et tu enregistres le classeur.
'---------------------------------
Sub ToutVisible(OK As Boolean)
Dim sh As Worksheet
For Each sh In Sheets
sh.Visible = True
Next
End Sub
'---------------------------------
Retour de ton fichier : https://www.cjoint.com/c/KBCbo42UArj
C'est moi qui avais foutu le bordel dans ton classeur afin d'effectuer
un test sans remettre le tout en place.
MichD
Avatar
Apitos
Bonjour MichD,
Pour ce faire, il s'agit d'enlever le paramètre "OK as Boolean" pour



afficher toutes les feuilles. Tu replaces ce paramètre immédiatement après.
Tu choisis la feuille "Accueil" et tu enregistres le classeur.
Pas compris !
Quant Í  la connexion, lorsque j'entre un faux user et vrai mdp, il y a erreur sur la ligne :
'-----
If Not Cel Is Nothing And Cel.Offset(0, 1).Value = Mdp Then
'-----
Avatar
MichD
Le 01/03/21 Í  16:00, Apitos a écrit :
Bonjour MichD,
Pour ce faire, il s'agit d'enlever le paramètre "OK as Boolean" pour



afficher toutes les feuilles. Tu replaces ce paramètre immédiatement après.
Tu choisis la feuille "Accueil" et tu enregistres le classeur.
Pas compris !
Quant Í  la connexion, lorsque j'entre un faux user et vrai mdp, il y a erreur sur la ligne :
'-----
If Not Cel Is Nothing And Cel.Offset(0, 1).Value = Mdp Then
'-----

Voir ton fichier : https://www.cjoint.com/c/KCbwfjXBGwj
Explication pour
If Not Cel Is Nothing And Cel.Offset(0, 1).Value = Mdp Then
Si Cel is nothing then la seconde partie de la ligne de code
Cel.Offset(0, 1).Value = Mdp ne peut pas s'exécuter puisque
Cel est Nothing par conséquent n'est pas définie.
Correction apportée.
MichD
Avatar
Apitos
Bonjour MichD,
Merci pour l'explication et la correction.
En sélectionnant une ligne Í  supprimer, la séquence d'exécution du code progresse normalement, jusqu'Í  ce que cette ligne provoque une erreur (Workbook_SheetSelectionChange) :
'----------------------------------
Target.Delete
'----------------------------------
Et si le débogueur dépasse cette ligne, la ligne suivante provoquera une erreur (Workbook_SheetChange) :
'-------------
If Target.Value <> MaVar Then
'--------------
Avatar
Apitos
Même si vous choisissez une ligne vide, cela conduit Í  la même erreur !
Avatar
Apitos
Même si je choisis une ligne vide, cela conduit Í  la même erreur !
Avatar
MichD
Le 02/03/21 Í  14:34, Apitos a écrit :
Même si je choisis une ligne vide, cela conduit Í  la même erreur !

Ton fichier : https://www.cjoint.com/c/KCdaZCXNZHj
MichD
1 2 3