Microsoft 365 Macro pour signaler alerte de non répétition

Excellerateur

XLDnaute Occasionnel
Chers membres salouté !



J'ai fait une certaine macro qui ne doit être exécutée qu'une seule fois par jour. J'ai besoin de faire en sorte que si une tierce personne qui, par erreur par exemple, essaye de la ré-exécuter, qu'un message d'alerte apparaisse et dise : "cette macro a déjà été exécuté en (la date du jour), tenez-vous à la lancer une seconde fois?".
avec deux boutons qui disent "oui" ou "non". Bien entendu le "oui" relance l'exécution de la macro et le "non" ferme la fenêtre de discussion.



Espérant m'être fait comprendre convenablement.



Excellemment votre!



@Excellerateur
 

Etoto

XLDnaute Barbatruc
Chers membres salouté !



J'ai fait une certaine macro qui ne doit être exécutée qu'une seule fois par jour. J'ai besoin de faire en sorte que si une tierce personne qui, par erreur par exemple, essaye de la ré-exécuter, qu'un message d'alerte apparaisse et dise : "cette macro a déjà été exécuté en (la date du jour), tenez-vous à la lancer une seconde fois?".
avec deux boutons qui disent "oui" ou "non". Bien entendu le "oui" relance l'exécution de la macro et le "non" ferme la fenêtre de discussion.



Espérant m'être fait comprendre convenablement.



Excellemment votre!



@Excellerateur
Hé salut, ça fait longtemps ! 😁

Tu arrives à nous montrer le code ? Comme ça on a tout au cas ou.
 

chagatte

XLDnaute Nouveau
Bonjour,

Peut-être une petite astuce :

A chaque fois que tu lances la macro, tu inscrits dans une feuille cache la date et l'heure de la dernière exécution.

Ensuite à chaque lancement de ta macro, tu vas chercher cette valeur et tu compares si le jour de la date de "maintenant" n'est pas égal à cette valeur précédemment stockée ? Qu'en penses-tu ?
 

Etoto

XLDnaute Barbatruc
Bonjour,

Peut-être une petite astuce :

A chaque fois que tu lances la macro, tu inscrits dans une feuille cache la date et l'heure de la dernière exécution.

Ensuite à chaque lancement de ta macro, tu vas chercher cette valeur et tu compares si le jour de la date de "maintenant" n'est pas égal à cette valeur précédemment stockée ? Qu'en penses-tu ?
Bonjour @chagatte

Dans une discussion du forum, il y'a déjà une macro qui donne le moment de l'exécution dans une cellule. Après tu fais ce que tu dis dans ton post et c'est automatisé.
 

Excellerateur

XLDnaute Occasionnel
Salut @Etoto ouais ça fait quelques jours! Salut @chagatte et merci pour ta contribution aussi,
Je vais essayer de faire ta manip et je vous dirai si ça a marché.

@Etoto pour mon code, le voici:
VB:
Sub Inventaire_jour_a_inventaire_veille()
'
' Inventaire_jour_a_inventaire_veille Macro
' Cette macro efface toute la plage de l'onglet Inventaire veille et puis copie et colle la plage
'inventaire du jour en lieu et place de l'onglet inventaire veille.
'

    Sheets("INVENTAIRE veille").Select
    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    Sheets("INVENTAIRE Jour").Select
    Range("A2").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("INVENTAIRE veille").Select
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("INVENTAIRE Jour").Select
    Application.CutCopyMode = False
    Sheets("INSTRUCTIONS").Select
    

End Sub

Je ne sais pas si je devrais insérer ma requete dans ce code ou plutot en faire toute une autre.

Merci à vous la team

@excellemment votre
 
Bonjour le fil, le forum
Dans une discussion du forum, il y'a déjà une macro qui donne le moment de l'exécution dans une cellule. Après tu fais ce que tu dis dans ton post et c'est automatisé.
@Etoto, si tu lis correctement le fil, tu verras que le demandeur a posté sa propre solution, mais qui ne fonctionne pas.
Range("F27").Select
ActiveCell.Value = "=Today()"
il inscrit dans une cellule une formule qui renvoie la date du jour, donc la cellule se mettra à jour à chaque recalcul que la macro ait été exécutée ou pas.
la bonne façon de faire aurait été
[F27] = DateValue(Now) pour inscrire la date et non une formule volatile par définition

Bien cordialement, @+
 

Etoto

XLDnaute Barbatruc
Bonjour le fil, le forum

@Etoto, si tu lis correctement le fil, tu verras que le demandeur a posté sa propre solution, mais qui ne fonctionne pas.
Range("F27").Select
ActiveCell.Value = "=Today()"
il inscrit dans une cellule une formule qui renvoie la date du jour, donc la cellule se mettra à jour à chaque recalcul que la macro ait été exécutée ou pas.
la bonne façon de faire aurait été
[F27] = DateValue(Now)

Bien cordialement, @+
Re,

Ha Bâ tu vois je ne savais pas, pourtant il a dit que ça fonctionnait, marrant ça.

En gros c'est comme s'il avait fait un AUJOURDHUI sur une cellule.
 
Donc si j'ai bien compris les explications de @Yeahou, on peut commencer par mettre dans le code un [cellule souhaitée]=DateValue(Now)
Re,

oui, il suffit d'écrire la date du jour dans une cellule quelconque à l'exécution de la macro et de vérifier au lancement de la macro que celle ci n'est pas égale à la date du jour .

Bien cordialement, @+
 

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T