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
    Essaie ceci:

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

    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
        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. 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
            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