Supprimer une ligne dans un fichier avec le formulaire

Bonjour à tous,

J'éprouve de nouveau des difficulté avec la programmation de mon formulaire en vba. J'ai ajouté un bouton "supprimer" avec ce code inscrit dans la feuille FormulaireInscription :

Private Sub BtnSupprimer_Click()
'supprimer un usager
Dim i As Integer
With Sheets("Inscriptions") ma base de donnée
Dim SupprimeLigne As String
SupprimeLigne = InputBox("Veuillez entrer le nom, prénom à supprimer", "SUPPRESSION")
With ThisWorkbook.Sheets("Inscriptions")
For i = .Range("F" & .Rows.Count).End(xlUp).Row To 3 Step -1
If .Range("F" & i).Value = SupprimeLigne Then
Rows(i).Delete

End If
Next i
End With
End With
End Sub

Ma feuille Excel est protégée. Lorsque j'enlève ma protection, le code fonctionne. Dès que je remet la protection sur ma feuille, mon code ne fonctionne plus. J'ai également ajouté ce code dans ThisWorkbook :

'Déveirouiller la feuille inscriptions
Private Sub Workbook_open()
Sheets("Inscriptions").Unprotect Password:="CES"
End Sub

Est-ce que vous pouvez me dire où est mon erreur ? Lorsque je lance le formulaire d'entrée de donnée, ma ligne de code Rows(i).Delete se met en surbrillance. Je ne trouve pas la solution de débogage.

Merci à tous !!

Private Sub BtnSupprimer_Click()
'supprimer un usager
Dim i As Integer
With Sheets("Inscriptions") ma base de donnée
Dim SupprimeLigne As String
SupprimeLigne = InputBox("Veuillez entrer le nom, prénom à supprimer", "SUPPRESSION")
With ThisWorkbook.Sheets("Inscriptions")
For i = .Range("F" & .Rows.Count).End(xlUp).Row To 3 Step -1
If .Range("F" & i).Value = SupprimeLigne Then
Sheets("Inscriptions").Unprotect Password:="CES"
Rows(i).Delete
Sheets("Inscriptions").Protect Password:="CES"
End If
Next i
End With
End With
End Sub

A tester

Bonjour le fil, bonjour le forum,

Si tu as beaucoup de données (de lignes donc), il serait utile de passer par une variable tableau plutôt que d'agir directement dans les cellules de l'onglet pour accélérer l'exécution du code. Sinon la proposition de M12 devrait convenir.

Le fait d'utiliser une Inputbox, avec nom et le prénom à taper par l'utilisateur, peux générer des fautes de frappe et la variable supprimeLigne risque de ne pas être trouvée dans la boucle. Je pense qu'en travaillant directement sur les cellules, avec les fonctions FIND et FINDNEXT ça devrait aller plus vite, sans toutefois régler l'éventuel problème de fautes de frappe.

Sinon on peut peut-être améliorer mais sans le fichier qui va bien je ne m'y risquerai pas.

Quand tu utilises une UserForm tu as la possibilité d'utiliser le paramètre UserInterfaceOnly qui permet de modifier un onglet protéger via celle-ci alors que directement dans l'onglet tu ne le pourras pas...

Private Sub Workbook_open()
Sheets("Inscriptions").Protect Password:="CES", UserInterfaceOnly:=True
End Sub


@M12 une idée de génie ! Tout fonctionne ! Merci de tout cœur

@ThauTheme j'ai changé ma formule et le tout fonctionne à merveille. Merci à vous également

Je perds des lignes dans ma base de donnée pour chaque suppression si un de vous êtes en mesure de me dire pourquoi je corrigerai le problème. Je vais essayer de changer ma ligne ... à suivre ..

Merci encore !

Rechercher des sujets similaires à "supprimer ligne fichier formulaire"