Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

afficher msgbox une seule fois

rh.finances

XLDnaute Occasionnel
Bonjour à tous les colistiers de ce super site!

je ne suis pas un grand spécialiste du langage Vba et je bute sur un problème dont je n'ai pas réussi à trouver la solution malgré plusieurs recherches sur le net.
dans mon fichier Excel ci-joint - onglet "nom agent", j'ai créé la macro suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Range("droit_subrogation") < 0 Then
MsgBox "la subrogation ne peut être appliquée. les IJ doivent être perçues directement par l'agent et les jours d'absence retirées de la paie", vbOKOnly + vbInformation, "subrogation"
End If

ActiveSheet.Name = Range("nom").Value

End Sub

cette macro fonctionne très bien, toutefois, je souhaiterais simplement que la msgbox ne s'affiche qu'une seule fois lors de la survenance de l’événement, puis cesse ensuite de fonctionner et ce même si la condition déclenchant la macro demeure remplie.
j'ai essayé de tenter des trucs avec "do", "undo" mais rien de concluant.

merci d'avance pour votre aide

Alex
 

Pièces jointes

  • calculateur - dt à subrogat° + calcul IJSS.xls
    64.5 KB · Affichages: 32

job75

XLDnaute Barbatruc
Bonjour rh.finances,

Il faut mémoriser l'information dans le nom défini "OK" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If TypeName([OK]) <> "Boolean" Then ThisWorkbook.Names.Add "OK", False 'création du nom défini
If Range("droit_subrogation") < 0 Then
    If Not [OK] Then
        MsgBox "la subrogation ne peut être appliquée. Les IJ doivent être perçues directement par l'agent et les jours d'absence retirés de la paie", vbOKOnly + vbInformation, "Subrogation"
        ThisWorkbook.Names.Add "OK", True
    End If
Else
    ThisWorkbook.Names.Add "OK", False 'RAZ
End If

ActiveSheet.Name = Range("nom").Value

End Sub
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…