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

XL 2010 Saisie ligne après ligne

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

  • exemple.xls
    100.5 KB · Affichages: 33
  • exemple.xls
    100.5 KB · Affichages: 13

Lone-wolf

XLDnaute Barbatruc
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
 

Discussions similaires

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