XL 2016 Stopper exécution macro si clic sur bouton déjà réalisé : Résolu

Coco42

XLDnaute Nouveau
Bonjour à tous,

Je reviens demander de l'aide!
Je réalise actuellement un macro me permettant de mettre à jour un tableau tous les mois en cliquant sur un bouton.
Je souhaiterais pouvoir stopper l'exécution de la macro si un clic sur le bouton a déjà eu lieu dans le mois, avec une msgbox indiquant : "mise à jour déjà effectuée pour ce mois".
Attention, il faut que la macro se remette à fonctionner le mois suivant lors du premier clic du mois (pour la mise à jour du fichier).

Comme le forum aime bien les fichiers pour mieux comprendre, je met un petit fichier d'exemple.
Je ne peux malheureusement pas mettre mon propre fichier car la macro est déjà bien longue et les données présentes sur le fichier sont confidentielles.

Merci d'avance pour votre aide. :)
Coco
 

Pièces jointes

  • Fichier exemple.xlsm
    17.4 KB · Affichages: 26

vgendron

XLDnaute Barbatruc
Bonjour
pourquoi ne pas utiliser une cellule quelque part (B2 par exemple) dans laquelle tu sauvegardes l'info "déjà cliqué"
et que tu réinitialises en début de mois à l'ouverture du fichier

VB:
Sub Bouton1_Cliquer()
'si on a cliqué sur le bouton1 pendant le mois, la macro ne doit pas se faire.
'msgbox "Tableau déjà mis à jour pour ce mois".
'Sinon :
Sheets("Feuil1").Select
If Range("B2") = "déjà Cliqué" Then
    Exit Sub
End If
If Range("A2") = "janv" Then
    Sheets("Feuil2").Select
    Range("A1") = 1
   
    ElseIf Range("A2") = "fév" Then
    Sheets("Feuil2").Select
    Range("A2") = 2
   
    ElseIf Range("A2") = "mars" Then
    Sheets("Feuil2").Select
    Range("A3") = 3
   
    ElseIf Range("A2") = "oct" Then
    Sheets("Feuil2").Select
    Range("A10") = 10
    Sheets("Feuil1").Range("B2") = "déjà Cliqué"
   
End If

End Sub
et pour la partie initialisation
VB:
Private Sub Workbook_Open()
If Day(Date) = 1 Then Sheets("Feuil1").Range("B2") = ""
End Sub
 

vgendron

XLDnaute Barbatruc
Petite mise à jour pour régler le problème du premier jour..
VB:
Private Sub Workbook_Open()
If Day(Date) = 1 And Day(Range("C2")) <> Day(Date) Then 'si on est en début de mois ET qu'on a pas déjà cliqué CE premier jour
    'sinon, on pourra cliquer autant de fois qu'on veut le premier jour du mois
    Sheets("Feuil1").Range("B2") = ""
    Sheets("Feuil1").Range("C2") = ""
End If
End Sub

Sub Bouton1_Cliquer()

Sheets("Feuil1").Select
If Range("B2") = "déjà Cliqué" Then
    MsgBox "Tableau déjà mis à jour pour ce mois"
    Exit Sub
End If
Select Case Range("A2")
    Case "janv"
        Valeur = 1
    Case "fév"
        Valeur = 2
    Case "mars"
        Valeur = 3
    Case "oct"
        Valeur = 10
End Select
Range("A" & Valeur) = Valeur
Sheets("Feuil1").Range("B2") = "déjà Cliqué le:"
Sheets("Feuil1").Range("C2") = Now

End Sub
 

Discussions similaires

Réponses
4
Affichages
113

Statistiques des forums

Discussions
312 294
Messages
2 086 886
Membres
103 404
dernier inscrit
sultan87