Macro modification

Bonjour à tous,

J'aimerais bien une macro qui me permet de savoir si un fichier est modifié

Comme par exemple :

if "fichier" a été modifié then

activeworkbook.activesheet.range("a1")=1

si le fichier a été modifier pour la 2eme fois

activeworkbook.activesheet.range("a1")=2

et ainsi de suite

Merci d'avance de votre réponse

Bonjour Isabelle29,

Je peux te proposer ceci

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    ActiveWorkbook.ActiveSheet.Range("a1").Value = ActiveWorkbook.ActiveSheet.Range("a1").Value + 1

End Sub

Qui rajoutera 1 à chaque fois que quelqu'un sauvegarde.

Ca ne permet pas de connaitre si il a été modifié mais au moins tu sauras si quelqu'un a ouvert et sauvegardé le fichier (obligé de sauvegarder si il a fait un modification )

A ajouter dans "ThisWorkbook"

Meme genre de reponse

mais événement avant de quitter le classeur, ajoute +1 et sauvegarde

Private Sub Workbook_BeforeClose(Cancel As Boolean)

ActiveWorkbook.ActiveSheet.Range("a1").Value = ActiveWorkbook.ActiveSheet.Range("a1").Value + 1
ActiveWorkbook.save
end sub

Bonjour edlede,

J'y avais pensé mais ça créé un risque de faire sauvegarder quelque chose qu'on ne voulait pas enregistrer !

Ca m'arrive souvent de bidouiller des cellules "pour voir" et de quitter sans sauvegarder

A moins que ça ne s'execute qu'en cas de sauvegarde par l'utilisateur ?

ou sinon un saveas avec un format date heure comme ça tu as l historique des modifs et tu ne pourri pas yes données initiales

Bonjour

Il y a dans ton énoncé Isabelle29, un élément manquant !

Modifié certes, mais par qui ?

Parce que si c'est par TOI il n'y a pas de problème => au moment de la sauvegarde Excel dit "Voulez-vous enregistrer" je pense que tu dois savoir si tu as "effectivement" modifié quelque chose d'important donc tu réponds en conséquence !

Si par contre c'est par quelqu'un d'autre il en va de même sa modification est enregistrée ou non en fonction de sa réponse à la même question.

Il te suffit de regarder la date du fichier dans l'explorateur ou même dans les propriétés sous Excel pour savoir de quand date le dernier enregistrement donc la dernière modification !


Maintenant si cela est un absolu pour toi de savoir "ce qui" et "par qui" a été modifié tu peux créer un fichier "log" (un journal des modifications) en fichier texte (la gestion des fichiers textes de ce genre est très rapide sur Excel). il faut juste prévoir de le consulter de temps en temps et de le purger assez souvent !

De cette manière tu peux consigner dans ce log absolument tout ce qui te parait important :

date ; heure ; nom utilisateur ; coordonnée de la cellule modifiée ; valeur initiale ; valeur après modif

ou encore le(s) ligne(s)/colonne(s)/onglet(s) ajouté(s), et/ou supprimé(s), même les changements d'onglet si tu veux... bref une sorte d'enregistreur clavier" des modifications qui te semblent importantes à "connaitre" / "conserver"

Bonjour

Merci de vos réponses

@ Gli73 je comprends votre aide mais moi j'aurai besoin de savoir si le fichier a été remplacé par un autre fichier ou non (je pense que je n'ai pas bien expliquer ça au début).

Normalement, j'ai un fichier qui se génère automatiquement et je veux une fonction qui me permets de savoir est ce que ce fichier a été généré pour la deuxième fois ou non.

Les modifications portées ne m'intéresses pas mais plutôt combien de fois a été remplacé.

Merci @ PinkRabbit et @ edlede de vos solutions

Alors pour bien expliqué mon cas , j'ai n fichiers qui sont exportés automatiquement dans un dossier

alors pour savoir le nbr de fois où le fichier a été exporté

par exemple j'ai exporté le fichier TVA1 à16h20min et j'ai réexporté le même fichier ce dernier remplacera le fichier excisant

alors moi je voudrais savoirs s'il vous plait le nombre d'exportations pour tous les fichiers .

Bonjour Isabelle29,

En effet maintenant je comprends mieux, ce n'est pas la modification le sujet mais d'avoir réédité le fichier.

Dir() te permet de tester si un doc existe déjà dans un dossier

Utilise

 if Dir("C:\Dossier\TVA1.xls") <> "" then
    ' Le fichier existe déjà dans le repertoire
Else
    ' Le fichier n'existe pas ==> Première création
End if

Avec ça tu pourras gérer ce que tu veux faire sachant que le fichier a déjà été édité et alimenter un compteur dans ton fichier générateur

Bonjour

Isabelle29 :

Que veux dire "dans ta tête, ton langage" le mot exporter ?

Bonsoir,

@ PinkRabbit merci pour la solution je vais l'essayer demain.

@ Gli73 l'exportation c'est transférer Exporter cad copié coller automatiquement les données existantes dans un fichier automatiquement dans un dossier

Bonjour Isabelle29

Désolé d'insister bêtement mais je n'ai toujours pas pris compris ce que tu cherches à faire

Essayons avec un croquis pour résumer ton besoin

En Supposant "ton répertoire" en date du 1 janvier 2019

capture isabelle29 01

nous constatons le jour suivant (le 2 janvier) que nous avons 2 fichiers "modifiés" ET 1 fichier "ajouté"

Le lendemain (le 3 janvier) supposons la situation suivante :

capture isabelle29 02

cette fois nous avons 4 fichiers "modifiés" ET 1 fichier "supprimé"

Est-ce bien cela que tu cherches à "constater" ?

Bonjour Gli73,

Merci de votre réponse , vous avez presque compris mon besoin. Normalement je n'ai pas besoin de savoir les fichiers ajoutés et supprimer mais plutôt les fichiers qui ont été modifiés . Alors pour bien expliquer la modification, c'est pas moi qui fait les modifications mais je génère le même fichier càd je saisie les informations sur un masque de saisie.xls ce qui me génère un fichier x alors si je saisie une autre fois presque les mêmes données et le même nom il le remplace.

Bonjour Isabelle29


En aparté 29 c'est pour "Pointe Bretagne" ?


Concernant le sujet... Je suis désolé mais il me semble que nous avons du mal à nous comprendre...

vous avez presque compris mon besoin

c'est donc un bon début !

Normalement je n'ai pas besoin de savoir les fichiers ajoutés et supprimer mais plutôt les fichiers qui ont été modifiés

nouveau point positif !

Alors pour bien expliquer la modification, c'est pas moi qui fait les modifications

ça j'avais compris, donc un autre !

Cependant

mais je génère le même fichier càd je saisie les informations sur un masque de saisie.xls ce qui me génère un fichier x

là ça se complique :

1) ".. je génère le même fichier .."

même veut dire quoi ?

2) ".. je saisie les infos sur masque de saisie.xls.. "

il faut bien les saisir quelque part, donc admettons cela comme un point positif

3) ".. ce qui me génère un fichier x.. "

donc je suppose qu'une macro-commande génère un fichier que nous définissons par X cependant le fichier X a-t-il toujours le même nom ? parce si c'est le cas effectivement et forcément (serais-je même tenté de dire) ".. alors si je saisie une autre fois presque les mêmes données et le même nom il le remplace.."

4) Cependant tu dis ".. si je saisie une autre ... et le même nom il le remplace.." donc en toute logique avec le même il est tout à fait logique que "il le remplace" ! et inversement si ne lui donne pas le même nom "il ne le remplace pas"

5) En conclusion :

5.1) Soit tu ne donnes jamais le même nom à ce fichier désigné X ET tu as automatiquement dans l'explorateur tous les fichiers X avec les dates de création (peu importe donc les modifications quelconques effectuées ou pas) !

5.2) Soit tu donnes toujours le même nom à ce fichier désigné X ET tu ne pourras savoir que la dernière date de modification qui va changer à chaque sauvegarde !

5.3) Soit tu donnes parfois le même nom ou parfois un autre ET tu n'as effectivement que peu de moyen de savoir tant le modifications que les dates de création !


Maintenant en analysant (en essayant surtout de comprendre) ton besoin je crois comprendre que la piste que je te donnais plus haut dans le fil

Maintenant si cela est un absolu pour toi de savoir "ce qui" et "par qui" a été modifié tu peux créer un fichier "log" (un journal des modifications) en fichier texte (la gestion des fichiers textes de ce genre est très rapide sur Excel). il faut juste prévoir de le consulter de temps en temps et de le purger assez souvent !

De cette manière tu peux consigner dans ce log absolument tout ce qui te parait important :

date ; heure ; nom utilisateur ; coordonnée de la cellule modifiée ; valeur initiale ; valeur après modif

ou encore le(s) ligne(s)/colonne(s)/onglet(s) ajouté(s), et/ou supprimé(s), même les changements d'onglet si tu veux... bref une sorte d'enregistreur clavier" des modifications qui te semblent importantes à "connaitre" / "conserver"

semble être la solution recherchée ! en limitant juste ce fichier "log" à la date de création du fichier X, la date de sauvegarde et pourquoi pas un "indicateur" de type VRAI/FAUX indiquant modifié ou non !

Dans ce "log" tu auras la date de chaque création et/ou modification, donc cela répond bien à la réponse que tu donnais à cette proposition !

Normalement, j'ai un fichier qui se génère automatiquement et je veux une fonction qui me permets de savoir est ce que ce fichier a été généré pour la deuxième fois ou non.

Si l'idée du "fichier texte" pour ce "log" ne te plait pas il est possible de l'intégrer dans un classeur soit dédié à cela, soit directement dans le fichier X au moment de la fermeture et cela avec ou sans choisir la sauvegarde.

Bonjour Gli73,

Merci de votre réponse .

29 c'est plutôt ma date d'anniversaire =D.

Voila

5.2) Soit tu donnes toujours le même nom à ce fichier désigné X ET tu ne pourras savoir que la dernière date de modification qui va changer à chaque sauvegarde !

Je donnes ( cad la personne qui génère le fichier et non pas moi) le même nom au fichier X et je peux savoir que la dernière modification

Normalement l'idée que j'ai en tête afin de faciliter le travail à ceux qui vont reprendre ce projet c'est de faire un tableau qui affiche automatiquement les valeurs suivantes .

marquage de decision 1

Qui n'affiche rien ( cellule vide ) si un fichier n'est pas encore généré

Qui affiche le chiffre 1 si un fichier X a été généré pour la première fois

Qui affiche le chiffre 2 si un fichier X ( le même fichier auparavant) si il a été généré pour la deuxième fois

Alors selon votre explication :

log" (un journal des modifications) en fichier texte (la gestion des fichiers textes de ce genre est très rapide sur Excel).

J'aimerai bien travailler avec cette méthode mais je ne peux pas parce que dans le cahier de charge que j'ai cette macro devra être sous format.xsl ( un fichier )

Alors pour la deuxième solution proposé :

Soit directement dans le fichier X au moment de la fermeture et cela avec ou sans choisir la sauvegarde.

Normalement les fichiers ils sont toujours sauvegardés mais la question c'est combien de fois ?

Bonjour Isabelle29

Donc tu n'est pas dans au bout de la terre J'espère alors, que ce n'est pas le 29 Février


Donc le Fichier X porte toujours le même nom ! Oui ou Non ?


PS/ Nous ne sommes pas sur Touyteur ou un autre machin du genre, tu n'est donc pas obligée de mettre un "like" à chacun de mes messages

Non heureusement , c'est plutôt 29 Janvier

Donc le Fichier X porte toujours le même nom ! Oui ou Non ?

Oui il port le même nom cad le fichier précédent est écrasé

Bonjour

¨

Pourquoi heureusement ? Le 29 Février tu aurais au moins l'avantage de rester jeune 4 fois plus longtemps !


Donc il faut utiliser 5.2) un log Excel intégré dans un onglet éventuellement masqué, accessible à la demande. Dans lequel je pense qu'il est judicieux de faire figurer pourquoi pas sous forme de tableau comme dans ta figure, avec un codage de ce genre plutôt que tes rien, 1 et 2 : NG (pour non généré) et Gx (pour Généré pour la Xième fois mais pas encore modifié) et enfin Mx (pour Modifié pour la Xième sans nouvelle génération)

Valides tu cela ?

C'est vrai

Merci pour votre réponse

Je valide et d'après mes recherches sur internet j'ai compris que la syntaxe de base est la suivante LOG(nombre, [base]) .Malheureusement depuis toute à l'heure j'ai essayé à développer cette syntaxe pour avoir une macro mais j'arrive pas .Est-ce que vous avez un code s'il vous plait à me proposer?

Merci d'avance de votre réponse,

Bonjour

Alors nous n'utilisons pas le même "internet"

Non sans rire "log" est effectivement en mathématique le symbole de logarithme mais c'est aussi un mot anglais qui, en informatique est utilisé pour désigner un historique d'événements et par extension le fichier contenant cet historique.

Quant à préparer un bout de code, je ne sais pas... Pour l'instant je n'ai qu'une image de ton fichier. Il faudrait avoir au moins un Fichier X pour que je puisse y intégrer directement le code !

Rechercher des sujets similaires à "macro modification"