Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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.

9 réponses

1 2 3
Avatar
MichD
Le 02/03/21 Í  19:52, MichD a écrit :
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

Une petite correction a été apportée:
https://www.cjoint.com/c/KCdmdzMqrnj
Quand tu supprimes une ligne, si tu saisis une donnée par la suite, il
arrivait sur l'adresse de référence dans la feuille "LOG" était inexacte.
MichD
Avatar
Apitos
Bonjour MichD,
Quand tu supprimes une ligne, si tu saisis une donnée par la suite, il


arrivait sur l'adresse de référence dans la feuille "LOG" était inexacte.
Pas compris ?
Avatar
MichD
Le 11/03/21 Í  18:36, Apitos a écrit :
Bonjour MichD,
Quand tu supprimes une ligne, si tu saisis une donnée par la suite, il


arrivait sur l'adresse de référence dans la feuille "LOG" était inexacte.
Pas compris ?

N.B. Si tu me demandes de commenter mon propos quelques heures plus tard
ou le lendemain, c'est frais Í  ma mémoire, mais une semaine plus tard,
mes préoccupations sont ailleurs. Sauf que j'ai apporté la correction,
c'est ce qui compte... NON?
Voici un exemple : prends un fichier tout neuf et dans le module de la
feuille du copie ceci.
--- Marche Í  suivre
a)Dans la cellule B5 met une valeur quelconque
b)Exécute la procédure Test
c)supprime la cellule B5 , SUPPRIMER n'est pas effacer
d)exécute la procédure Test1
e)observe ce qui se passe!
f)c'est ce type de correction que j'ai faite dans ton code.
'Déclaration dans le haut de la variable
Dim Rg As Range
'--------------------
Sub test()
Set Rg = Range("B5")
End Sub
'--------------------
Sub test1()
x = Rg.Value
End Sub
'--------------------
Le fichier suivant fonctionne selon tes demandes :
https://www.cjoint.com/c/KCmdeqhPxpj
MichD
Avatar
apt apt
Bonjour MichD,
N.B. Si tu me demandes de commenter mon propos quelques heures plus tard
ou le lendemain, c'est frais Í  ma mémoire, mais une semaine plus tard,
mes préoccupations sont ailleurs. Sauf que j'ai apporté la correction,
c'est ce qui compte... NON?

Désolé !
Pour le test, j'ai eu cette erreur :
Erreur d'exécution '424':
Objet requis
Pour supprimer la cellule que vous avez utilisée, cliquez avec le bouton droit de la souris et supprimez-la dans le menu contextuel.
En utilisant la touche "supprimer", rien ne s'est passé!
Quant Í  l'erreur, je n'ai pas trouvé d'explication? Bien que la valeur supprimée soit stockée dans la variable Rg?
Avatar
MichD
Le 12/03/21 Í  05:30, apt apt a écrit :
Bonjour MichD,
N.B. Si tu me demandes de commenter mon propos quelques heures plus tard
ou le lendemain, c'est frais Í  ma mémoire, mais une semaine plus tard,
mes préoccupations sont ailleurs. Sauf que j'ai apporté la correction,
c'est ce qui compte... NON?

Désolé !
Pour le test, j'ai eu cette erreur :
Erreur d'exécution '424':
Objet requis
Pour supprimer la cellule que vous avez utilisée, cliquez avec le bouton droit de la souris et supprimez-la dans le menu contextuel.
En utilisant la touche "supprimer", rien ne s'est passé!
Quant Í  l'erreur, je n'ai pas trouvé d'explication? Bien que la valeur supprimée soit stockée dans la variable Rg?

| En utilisant la touche "supprimer", rien ne s'est passé!
L'erreur qui est générée, ce n’est rien? Tu voulais avoir plus de
précision sur le commentaire de la correction de l'erreur générée dans
mon commentaire.
Pourquoi l'erreur 424? Parce que la variable objet Range "Rg" pointe
vers la cellule B5 et que cette cellule a été supprimée. La variable
existe toujours, mais la cellule vers laquelle elle pointe n'existe plus.
Dans le fichier que j'ai joint lors de mon dernier message, cette erreur
n'existe plus, car j'ai apporté la modification désirée!
Tu peux simplement faire un copier-coller du code du fichier vers le tien!
MichD
Avatar
MichD
Un autre exemple au niveau de la feuille de calcul.
Donne Í  la cellule A3, le nom "toto" (plage nommée)
Dans une autre cellule, tu écris la formule =toto
Maintenant, supprime la cellule A3, maintenant la
formule =toto retourne #ref! Pourquoi, parce que tu
as supprimé la cellule de référence au nom "toto".
C'est un peu la même chose en VBA.
Une variable (vba ou nom d'une plage) est un espace
mémoire de la mémoire vive qui pointe sur une adresse
de cellule spécifique ayant un certain contenu. Quand
tu supprimes la cellule, la variable ou le nom n'est
pas supprimé. Par conséquent, l'espace mémoire vers
laquelle pointe la variable n'existe plus, par
conséquent, la variable ou la plage nommée est sans
objet (espace mémoire), elle retourne alors une erreur.
MichD
Avatar
Apitos
Une variable (vba ou nom d'une plage) est un espace
mémoire de la mémoire vive qui pointe sur une adresse
de cellule spécifique ayant un certain contenu. Quand
tu supprimes la cellule, la variable ou le nom n'est
pas supprimé. Par conséquent, l'espace mémoire vers
laquelle pointe la variable n'existe plus, par
conséquent, la variable ou la plage nommée est sans
objet (espace mémoire), elle retourne alors une erreur.

Ce que j'ai compris, c'est que lorsqu'on supprime une cellule avec son contenu, il y a une nouvelle cellule qui la remplacera dans la feuille de calcul, par le même nom, qui est A3 (ou toto dans ton exemple), mais avec un contenu différent (vide par exemple).
Ainsi, A3 est représentée avec son contenu, par l'adresse xA3 en mémoire, par exemple.
Si on supprime A3, puis la sollicitant Í  nouveau, l'adresse mémoire xA3 sera sollicitée Í  son tour.
Le système trouve A3 dans la feuille, mais avec un nouveau contenu et une nouvelle adresse en mémoire, par exemple xxA3.
l'adresse xA3 pointe sur cellule inexistante.
Est-ce ainsi que ça va se passer ?
Sinon, l'adresse xA3 a-t-elle été supprimée, suite Í  la suppression de la cellule A3 de la feuille ?
Merci.
Avatar
MichD
Le 12/03/21 Í  11:35, Apitos a écrit :
Une variable (vba ou nom d'une plage) est un espace
mémoire de la mémoire vive qui pointe sur une adresse
de cellule spécifique ayant un certain contenu. Quand
tu supprimes la cellule, la variable ou le nom n'est
pas supprimé. Par conséquent, l'espace mémoire vers
laquelle pointe la variable n'existe plus, par
conséquent, la variable ou la plage nommée est sans
objet (espace mémoire), elle retourne alors une erreur.

Ce que j'ai compris, c'est que lorsqu'on supprime une cellule avec son contenu, il y a une nouvelle cellule qui la remplacera dans la feuille de calcul, par le même nom, qui est A3 (ou toto dans ton exemple), mais avec un contenu différent (vide par exemple).

****Rien de tout cela n’arrive!
Quand tu crées une plage nommée Í  plusieurs cellules ou Í  une cellule en
lui attribuant un "NOM" ou une variable en VBA, dans les 2 cas lors de
leur création dans le cas d'une variable, dès que tu déclares la
variable, un espace mémoire est créé pour accepter son contenu éventuel.
Selon que tu définis le type de cette variable As Interger, Long,
Double, Currency, String ou Variant, un espace mémoire plus ou moins
grand est crée et réservé selon leur type afin de pouvoir contenir la
valeur que la procédure va leur attribuée. C'est un peu la même chose
pour la plage nommée. Quand tu supprimes cette variable ou nom, tu
supprimes cet espace mémoire. Dans la feuille de calcul, lorsque tu
supprimes une cellule, elle est remplacée par une autre cellule, mais
l'espace mémoire ne l'est pas. Tu l'as supprimé au moment de la
suppression de la cellule. Cependant, le nom ou la variable existe
toujours, mais dans les 2 cas, l'espace mémoire o͹ elle faisait
référence est manquant. La nouvelle cellule qui prit la place de l'autre
Í  l'écran ne peut prendre l'espace mémoire qu'occupait l'ancienne
cellule ou variable.
Si tu as fait le petit exercice de nommer la cellule B3 de "Toto" et que
tu entres en C10 la formule =toto dès que tu supprimes la cellule
"toto" (B3) c10 indique #Ref! pourtant il y a une autre cellule qui a
remplacé
la cellule B3.
C'est ce que l'on appelle des "Pointeurs" en langage de programmation.
Ce n'est pas essentiel de comprendre le pourquoi et le comment, mais il
faut se rappeler l'effet que cela a. J'arrête ici, si tu veux en savoir
davantage, un bon bouquin sur le sujet t'aidera.
MichD
Avatar
apt apt
Merci MichD pour les éclaircissements et l'explication.
Je te suis reconnaissant.
@ très bientÍ´t
1 2 3