MessageBox

Résolu
Bonjour,

Je souhaiterais faire apparaître une MessageBox sur une plage (B3:M147) qui informerais l'utilisateur que la cellule qu'il souhaite modifier contient déjà quelque chose. Si vide aucun message.

Serait-il éventuellement possible dans un deuxième temps de protéger les cellules renseignées à la fermeture du classeur?

Peut-être pourrais je combiner les deux action selon la réponse de l'utilisateur à la MessageBox.
Voulez vous modifier le contenu? => si oui; alors autorisation puis protection / si non => alors protection.
Et laisser les cellules vides tranquilles

Merci
(Débutante volontaire)

7 réponses

  1. Contributeur
    Bonjour,

    Voilà pour la 1ère question:

    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Application.Intersect(Target, Range("B3:M147")) Is Nothing Then Exit Sub
    If Target.Value = "" Then Exit Sub
    MsgBox "la cellule que vous souhaitez modifier contient déjà quelque chose: " & Target.Value, vbOKCancel, "Selection"
    End Sub
    


    A mettre dans la feuille concernée
    1. Oh magnifique! Merci beaucoup.

      Pour la 2ème question
      Faudrait-il mieux séparer les deux actions ou l'intégrer à cette même macro?

      Si je rajoute ça c'est bien ça marche.

          Private Sub Workbook_BeforeClose(Cancel As Boolean)
          For Each sh In Sheets
          sh.Protect Password:="mot de passe"
          Next sh
          ThisWorkbook.Save
          End Sub
      

      mais combiner les deux serait possible aussi?

      Sinon je suis satisfaite déjà ...

      Merci Merci
      1. Contributeur
        Les 2 macros sont différentes et n'agissent pas au même moment.
        Il y a une macro qui agit sur la feuille et l'autre à la fermeture et qui est placée dans ThisWorkbook.

        Si la question est résolue cliquez sur RESOLU

        Bonne journée
        1. Bonjour et désolée de réouvrir le topic.

          Je me suis auto piégée à cause d'une consolidation!!! je n'avais pas envisagé le cas du sauf zéro!

          Pour renouveler mon explication:
          Je souhaite dans une plage (B3:M147) des 3 premières feuilles, faire apparaitre une MessageBox qui indique à l'utilisateur qu'on a déjà saisi une valeur autre que zéro. (sinon ma consolidation ne peut pas marcher). Puis (enregistrer) et protéger le classeur avant la fermeture.

          https://www.cjoint.com/?DJwtou88FRQ
          mot de passe: ok en minuscule si protégé

          Merci
          1. Contributeur
            Essaie ceci:

            If Target.Value = "" Or Target.Value = "0" Then Exit Sub