Microsoft 365 Msgbox si on change de feuille sans vider une cellule

pat66

XLDnaute Impliqué
Bonjour le forum,

Sur la feuil1, la cellule BV28 n'est pas vide et je souhaite aller sur une autre feuille

est il possible d'afficher un msgbox avant d'afficher la feuil2 qui me rappelle que j'ai oublié de vider la cellule BV28 et qui me propose
soit de continuer sur la feuil2, mais vide la cellule BV28,
soit on reste sur la feuil1

merci beaucoup

cdt
 
Solution
Bonjour,

Sur la feuil1, la cellule BV28 n'est pas vide et je souhaite aller sur une autre feuille

est il possible d'afficher un msgbox avant d'afficher la feuil2 qui me rappelle que j'ai oublié de vider la cellule BV28 et qui me propose
soit de continuer sur la feuil2, mais vide la cellule BV28,
soit on reste sur la feuil1

Une proposition :
VB:
Private Sub Worksheet_Deactivate()
'
    If [BV28] <> "" Then
        If MsgBox("BV28 pas vide !" & vbCrLf & vbCrLf & "Vider BV28 et continuer ?", vbYesNo, "Problème") = vbYes Then
            [BV28].ClearContents
        Else
            Me.Activate
        End If
    End If

End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Pat,
Si j'ai bien tout compris :
Code:
Sub Worksheet_Activate()
    If Sheets("Feuil1").[BV28] = "" Then Exit Sub
    Question = MsgBox("La cellule BV28 ne la Feuil1 n'est pas vide." & Chr(10) & _
                    "Voulez vous revenir sur la Feuil1 pour vider cette cellule ?", _
                    vbQuestion + vbYesNo + vbDefaultButton2, "ALERTE")
    If Question = vbYes Then
        Sheets("Feuil1").Select
    Else
        Sheets("Feuil1").[BV28] = ""
    End If
End Sub
 

Pièces jointes

  • Pat.xlsm
    13.6 KB · Affichages: 4

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Sur la feuil1, la cellule BV28 n'est pas vide et je souhaite aller sur une autre feuille

est il possible d'afficher un msgbox avant d'afficher la feuil2 qui me rappelle que j'ai oublié de vider la cellule BV28 et qui me propose
soit de continuer sur la feuil2, mais vide la cellule BV28,
soit on reste sur la feuil1

Une proposition :
VB:
Private Sub Worksheet_Deactivate()
'
    If [BV28] <> "" Then
        If MsgBox("BV28 pas vide !" & vbCrLf & vbCrLf & "Vider BV28 et continuer ?", vbYesNo, "Problème") = vbYes Then
            [BV28].ClearContents
        Else
            Me.Activate
        End If
    End If

End Sub
 
Dernière édition:

pat66

XLDnaute Impliqué
bonsoir Sylvanu,

Merci pour votre aide

votre solution fonctionne bien mais je ne vais pas forcément aller sur la feuil2
Peut on faire en sorte que quelque soit la feuille choisit, le message s'affiche si BV 28 n'est pas vide ?

merci
 

pat66

XLDnaute Impliqué
re,

je reviens vers vous messieurs car je rencontre un problème avec vos deux propositions.
Lorsque je souhaite revenir sur la feuil1, Excel me signale une erreur 1004 à l'activation de n'importe quelle feuille que j'ai voulu afficher, avez vous une idée, merci ?

Private Sub Worksheet_Activate() (de la feuille que j'ai voulu afficher)
Range("A1:Q3").Select (erreur 1004)
 

job75

XLDnaute Barbatruc
Bonjour,

Le bug vient du fait que la feuille active n'est pas la feuille de la macro donc utilisez ;
VB:
Private Sub Worksheet_Activate()
    If ActiveSheet.Name <> Me.Name Then Exit Sub
    Range("A1:W5").Select
    ActiveWindow.Zoom = True
    ScrollArea = "A1:W35"
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame