XL 2010 Saisie ligne après ligne

  • Initiateur de la discussion Initiateur de la discussion Alex4
  • 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 !

Alex4

XLDnaute Nouveau
Bonjour le forum !
Je cherche à créer une macro qui permette, dès qu'un utilisateur a rempli une ligne, de verrouiller la ligne saisie.

Plus précisément :
Dans le fichier ci dessous :
1/ la saisie se fait dans les colonnes B à E, de la ligne 18 à 323. Le reste de la feuille est protégée.
2/ une personne X remplit la ligne 18. Une fois remplie un message demande si la saisie est confirmée
3/ si la saisie est ok, la ligne 18 est verouillée, et protégée

la prochaine saisie se fera ligne 19 et ainsi de suite jusqu'à 323

J'ai écrit le code qui je pense correspond à la demande ci dessus. Mais quand j'exécute la macro, rien ne se passe... pouvez-vous m'aider ? Merci !

Alex.
 

Pièces jointes

Bonsoir Alex et bienvenue sur XLD 🙂

Normal que ça ne fonctionne pas, tu as mis la macro dans le module de la feuille, il faut la mettre dans un module standard.
Voici la macro corrigée.

VB:
Public Sub CalculAbsoption()
Dim CC As Worksheet    'déclare la variable CC (Carte de Contrôle)
Dim LI As Long    'déclare la variable LI (LIgne)

    Application.ScreenUpdating = False    'masque les rafraîchissements d'écran
    Set CC = Worksheets("exemple")    'définit l'onglet CC
    CC.Unprotect "panier"    'déprotège l'onglet CC

    With CC
        LI = .Cells(Rows.Count, "B").End(xlUp).Row    'définit la première ligne vide de la colonne B
        .Range(.Cells(LI, "B"), .Cells(LI, "F")).Locked = True    'verrouille la ligne LI
    End With
    'protège l'onglet CC

    CC.Protect Password:="panier", DrawingObjects:=True, Contents:=True, Scenarios:=True, _
    AllowFormattingCells:=True, AllowFormattingColumns:=True, AllowFormattingRows:=True
End Sub

'---------------------------------------------------------------

'À mettre dans le module de la feuille, utilise TAB du clavier pour te déplacer de B à F
Private Sub Worksheet_SelectionChange(ByVal R As Range)
If Not Intersect(R, Columns("G:G")) Is Nothing Then Call CalculAbsoption
End Sub
 
- 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

Réponses
5
Affichages
265
Retour