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

XL 2016 Interdire de saisir en colonne

Seddiki_adz

XLDnaute Impliqué
bonjour
je cherche une formule ou une méthode d’interdire de saisir en colonne C et D si en a M1 et M2 en colonne B et interdire de saisir en colonne E et F si en a M3 et M4 en colonne B et interdire de saisir en colonne G et H si en a M5 et M6 en colonne B et interdire de saisir en colonne I et J si en a M7 et M8 en colonne B et interdire de saisir en colonne K et L si en a M9 et M10 en colonne B
Merci
 

Pièces jointes

  • INTERDIR DE SAISIR.xlsx
    8.6 KB · Affichages: 5
Solution

ChRouan

XLDnaute Nouveau
Bonsoir. A mon avis il faudra obligatoirement passer par une macro Visual Basic pour modifier le statut verrouillé/déverrouillé des cellules puis protéger la feuille, avec ou sans mot de passe. Cette macro devra s'exécuter chaque fois qu'il y a modification d'une cellule dans la colonne B.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

La version avec liste de validation peut poser un problème si on change la valeur en colonne B.
Dans ce cas, on peut se retrouver avec des cellules ayant déjà une valeur avant le changement de la colonne B et ne devant pas en comporter après la nouvelle valeur de la colonne B.

La version VBA répond en partie à ce défaut.
  • Elle n'empêche pas la saisie dans les cellules interdites mais annule la saisie.
  • Elle prend en compte le changement de valeur de la colonne B.
  • Elle permet la saisie multi-cellules.
Le code est dans le module associé à la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim der&, i&, n&, k&
   On Error GoTo FIN
   Application.EnableEvents = False
   der = Me.UsedRange.Row + Me.UsedRange.Rows.Count - 1
   For i = 2 To der
      If Not Intersect(Target, Range("b" & i & ":L" & i)) Is Nothing Then
         If (Cells(i, "b") Like "M#") Or (Cells(i, "b") Like "M##") Then
            n = CInt(Mid(Cells(i, "b"), 2)) - 1: n = n \ 2
            If n <= 4 Then Cells(i, "c").Offset(, 2 * n).Resize(, 2).ClearContents
         End If
      End If
   Next i
FIN:
   Application.EnableEvents = True
End Sub
 

Pièces jointes

  • Seddiki_adz- INTERDIRE DE SAISIR- v2.xlsm
    16.7 KB · Affichages: 3
Dernière édition:

Seddiki_adz

XLDnaute Impliqué
Excellent Merci
 

Discussions similaires

Réponses
15
Affichages
420
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…