Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Bloquer la saisie dans une plage selon un critère

  • Initiateur de la discussion Initiateur de la discussion Yvan1
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Yvan1

XLDnaute Occasionnel
Bonjour,
Dans le tableau de suivi de trésorerie joint, l'utilsateur peut faire des mises à jour sur le mois en cours et les mois postérieurs, mais pas sur les mois antérieurs.
J'ai donc inséré un code dans l'onglet, qui en fonction de la cellule concernée, appelle une macro qui va contrôler le mois (recherche du mois dans l'onglet Infos).
Si le mois n'est pas modifiable, apparition d'une Msgbox avec l'intitulé "Non modifiable".
Mais si j'en reste là, l'utilisateur va quand même pouvoir modifier la valeur (une fois la msgbox fermée) puisqu'il n'y a pas de changement de sélection de cellule.
J'ai donc mis dans la macro de contrôle, une sélection de la cellule A2 de façon à sortir de la cellule ayant fait l'objet d'une tentative de modification.
Et c'est là qu'apparait le problème d'affichage.
En effet, même si la cellule n'est plus active, elle apparait toujours comme telle, détourée en vert... sauf si la cellule sélectionnée est entre les lignes 1 et 15 !
La méthode n'est peut être pas la plus adaptée pour arriver à mes fins.
Je m'en remets à vos propositions.
Merci d'avance,
Yvan
 

Pièces jointes

Solution
Bonsoir.
Mettez peut être ça pour rester dans le même volet figé afin que la cellule interdite n'apparaisse plus sélectionnée :
VB:
Sub MAJTVA()

    If Application.WorksheetFunction.VLookup(Cells(8, ActiveCell.Column), Sheets("Infos").Range("B7:C18"), 2, False) = "Non modifiable" Then
        MsgBox "Non modifiable"
        Application.EnableEvents = False
        Intersect([X:X], ActiveCell.EntireRow).Select
        Application.EnableEvents = True
    Else
        MsgBox "Mise à jour du montant de TVA à payer"
    End If

End Sub
Bonsoir.
Mettez peut être ça pour rester dans le même volet figé afin que la cellule interdite n'apparaisse plus sélectionnée :
VB:
Sub MAJTVA()

    If Application.WorksheetFunction.VLookup(Cells(8, ActiveCell.Column), Sheets("Infos").Range("B7:C18"), 2, False) = "Non modifiable" Then
        MsgBox "Non modifiable"
        Application.EnableEvents = False
        Intersect([X:X], ActiveCell.EntireRow).Select
        Application.EnableEvents = True
    Else
        MsgBox "Mise à jour du montant de TVA à payer"
    End If

End Sub
 
Bonjour,

Je n'ai pas ouvert le classeur de #1, mais quand je lis ceci je me demande pourquoi aller chercher un mois dans "un onglet" (plutôt dans une feuille, je suppose) si seuls le mois en cours et postérieurs sont autorisés ? 🤔
 
Bonjour,
Merci à Dranreb pour sa contribution. Cela convient parfaitement.
Quant à TooFatBoy, il fallait effectivement lire feuille et non onglet.
Bonne journée à vous deux, et encore merci de vous être penché sur ma problématique.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…