Microsoft 365 Msgbox qui doit s'afficher une seule fois

pat66

XLDnaute Impliqué
Bonjour le forum,

pourriez vous m'aider à faire en sorte que le message ne s'affiche qu'une seule fois au premier changement de l'une de ces 2 cellules

un grand merci

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
MsgBox "Le changement de lot réinitialise les pages ""Feuil"" et ""Feuil2"" " & Chr(13) & Chr(13) & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
Application.EnableEvents = True
End If
end sub

pat66
 
Solution
Bonjour pat66 :) ,

Testez le code suivant (dans le module de la feuille) :
VB:
Option Explicit
Dim dejaFait As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False
   If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
      If Not dejaFait Then
         MsgBox "Le changement de lot réinitialise les pages 'Feuil' et 'Feuil2' " & vbLf & vbLf & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
         dejaFait = True
      End If
   End If
End Sub

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour pat66 :) ,

Testez le code suivant (dans le module de la feuille) :
VB:
Option Explicit
Dim dejaFait As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
   Application.ScreenUpdating = False
   If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
      If Not dejaFait Then
         MsgBox "Le changement de lot réinitialise les pages 'Feuil' et 'Feuil2' " & vbLf & vbLf & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
         dejaFait = True
      End If
   End If
End Sub
 

Lolote83

XLDnaute Barbatruc
Bonjour,
Peut être comme ceci sans conviction car pas testé
VB:
Public xOnEstDejaPasseIci As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    If xOnEstDejaPasseIci = False Then
        If Not Application.Intersect(Target, Range("F30,F33")) Is Nothing Then
            MsgBox "Le changement de lot réinitialise les pages ""Feuil"" et ""Feuil2"" " & Chr(13) & Chr(13) & "Veuillez redéfinir la valeur initiale", vbOKOnly + vbInformation, "avertissement"
            xOnEstDejaPasseIci = True
        Else
            xOnEstDejaPasseIci = False
        End If
    End If
    Application.EnableEvents = True
End Sub
Edit : Bonjour @mapomme, oups pas rafraichi.
@+ Lolote83
 
Dernière édition:

pat66

XLDnaute Impliqué
bonjour le fil,

Merci à tous pour la rectification ("F30,F33")

mapomme, je viens de m'apercevoir qu'il fallait placer en début de feuille
Option Explicit
Dim dejaFait As Boolean

je reteste..... je reviens le temps de rouvrir le classeur

merci
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin