Verrouiller une ligne entière VBA

Bonjour,

Je rencontre un souci avec mon code et j'espère que vous pourrez m'aider.

En effet, j'ai mis en place un formulaire de saisie qui alimente la première ligne non vide de mon fichier.
Ma problématique est qu'une fois la ligne alimentée à l'aide de mon formulaire, je souhaite également la verrouiller mais je n'y parviens pas (erreur).

Je tiens à préciser que les lignes A et B de mon fichier sont déjà verrouillées car utilisées pour un bandeau d'information.

J'ai donc également déverrouillé toutes les cellules restantes de mon fichier (dans format de cellules/Protection) pour qu'elles restent modifiables.

Voici mon code :

Private Sub Valider_Click()

Ls = Range("A65000").End(xlUp).Row + 1
Range(Cells(Ls, 1), Cells(Ls, 12)).Select
Selection.Interior.Color = RGB(179, 204, 83)
Range(Cells(Ls, 1), Cells(Ls, 1)).Value = cmbComboBox
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Size = 20
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Bold = True
Range(Cells(Ls, 1), Cells(Ls, 1)).HorizontalAlignment = xlCenter
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Name = "Bahnschrift"
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Color = RGB(230, 237, 238)
Range(Cells(Ls, 1), Cells(Ls, 1)).Select

Range(Cells(Ls, 2), Cells(Ls, 2)).Value = TextBox1
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Size = 14
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Bold = True
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Name = "Bahnschrift Light"
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Color = RGB(230, 237, 238)

With Selection.Rows.AutoFit

Selection.Locked = True
Selection.FormulaHidden = False

cmbComboBox.ListIndex = -1
TextBox1.Value = ""
Operation.Hide

End With

End Sub

J'ai donc tenté un selection.locked = True mais je rencontre une erreur.
Etant débutant je ne parviens à m'en dépatouiller.

Merci d'avance pour votre aide.

Cdt

Bonjour,

Fournir le classeur SVP

A+

Bonjour, Vous ne pouvez pas utiliser selection.locked puisque vous n'avez rien sélectionné.

Dans votre code la nouvelle ligne c'est votre variable : Ls

Rows(Ls).Locked = True

Bonjour Xmenpl,

Merci pour votre retour.
Je viens de tester avec votre solution mais j'ai toujours une erreur, je ne comprends pas.

Avec un fichier exemple on comprendrait mieux.

Le formulaire est un userform ? Le reste du code sert à quelque chose à partir de With ... ?

Si c'est pour vider le userform on écrit

Unload me puis on refait un userform.show çà va plus vite que vider toutes les formes à l'intérieur.

Je suis désolé, je ne peux pas transmettre de fichier.
Oui c'est une UserForm mais je ne souhaite pas la vider.

L'idée est vraiment que lorsque que je valide les données inscrites dans le formulaire, la ligne du fichier se verrouille.

Si je retire toutes les lignes qui ne me semble pas nécessaire ; j'ajouterai quand même la déprotection de la feuille en début de macro

(à personnalier avec votre mot de passe ) ( la feuille doit donc être protégée avant utilisation du userform )

et en fin de macro la reprotection de la feuille.

Private Sub Valider_Click()
ActiveSheet.UnProtect Password: = "votremotpasse"

Ls = Range("A65000").End(xlUp).Row + 1
Range(Cells(Ls, 1), Cells(Ls, 12)).Select
Selection.Interior.Color = RGB(179, 204, 83)
Range(Cells(Ls, 1), Cells(Ls, 1)).Value = cmbComboBox
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Size = 20
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Bold = True
Range(Cells(Ls, 1), Cells(Ls, 1)).HorizontalAlignment = xlCenter
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Name = "Bahnschrift"
Range(Cells(Ls, 1), Cells(Ls, 1)).Font.Color = RGB(230, 237, 238)
Range(Cells(Ls, 1), Cells(Ls, 1)).Select

Range(Cells(Ls, 2), Cells(Ls, 2)).Value = TextBox1
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Size = 14
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Bold = True
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Name = "Bahnschrift Light"
Range(Cells(Ls, 2), Cells(Ls, 2)).Font.Color = RGB(230, 237, 238)

Rows(Ls).Locked = True

ActiveSheet.Protect Password: = "votremotpasse"

End sub

Bonjour Xmenpl,

Je viens de tester votre solution et ça fonctionne très bien.
En effet, il faut bien déprotéger la feuille et la reprotéger à la fin.

Merci beaucoup !

Rechercher des sujets similaires à "verrouiller ligne entiere vba"