Microsoft 365 VBA MsgBox avec multiples conditions

raf26

XLDnaute Occasionnel
Bonjour,

Je coince sur un code VBA pour déclencher une message box avec conditions multiples.

Sur mon fichier, 3 feuilles (avec déjà pas mal de codes VBA).

Je souhaiterais qu'à la fermeture du fichier (fonction beforeclose ?) :


1 : pour la feuil1 SI : B3 contient *AAA* ET SI E9 est inférieur à 500
ALORS message box ("blablabla")

+


2 : SI 'feuil2!B1 ET/OU SI 'feuil3!B1 <>"" (non vides)
ALORS effacer la cellule 'Feuil1!B3 ET message box ("blablabla")

Info : sur feuil1 la cellule B3 est remplie d'après une formule et la feuille est protégée. Cela a une incidence sur la macro ?

Ci-joint fichier épuré.

D'avance merci

Bonne journée à vous
 
Dernière édition:
C

Compte Supprimé 979

Guest
Bonjour Raf26

Voici le code à tester si cela te convient ;)
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Sheets("Feuil1")
    If .Range("B3") = "AAA" And .Range("E9") < 500 Then
      MsgBox "blablabla", vbInformation, "MESSAGE"
    End If
  End With
  If Sheets("Feuil2").Range("B1") <> "" Or Sheets("Feuil1").Range("B1") <> "" Then
    MsgBox "On efface la cellule B3 de la feuille1"
    Sheets("Feuil1").Range("B3").ClearContents
    MsgBox "blablabla", vbInformation, "MESSAGE"
  End If
End Sub

Aucune importance si les feuilles sont protégées
 

raf26

XLDnaute Occasionnel
Bonjour BrunoM45

Merci pour ton retour, génial, c'est exactement ce que je cherchais.

Je manque encore d'expérience en vba pour écrire ce que je veux faire...

Un point que je n'ai pas soulevé dans ma question :

Je voudrais que sur la première msgbox avec "voulez vous modifier votre saisie ?" avoir comme option oui ou non

Si je clique oui : le fichier ne se ferme pas et se positionne sur feuil1!C19 par exemple

Si je clique non : le fichier s'enregistre et se ferme


Pour la msgbox de la 2ème condition, c'est ok

Merci
 
C

Compte Supprimé 979

Guest
Re,

Je n'ai pas pour habitude de retraiter un sujet déjà traité, mais Ok pour cette fois-ci :p

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With Sheets("Feuil1")
    If .Range("B3") = "AAA" And .Range("E9") < 500 Then
      If MsgBox("Voulez-vous modifier votre saisie ?", vbQuestion + vbYesNo, "MESSAGE") = vbYes Then
        Cancel = True
        Exit Sub
      End If
    End If
  End With
  If Sheets("Feuil2").Range("B1") <> "" Or Sheets("Feuil1").Range("B1") <> "" Then
    MsgBox "On efface la cellule B3 de la feuille1"
    Sheets("Feuil1").Range("B3").ClearContents
    MsgBox "blablabla", vbInformation, "MESSAGE"
  End If
End Sub
 

Discussions similaires

Réponses
8
Affichages
266
Réponses
2
Affichages
110

Statistiques des forums

Discussions
312 095
Messages
2 085 248
Membres
102 835
dernier inscrit
Alexandrax971