Bonjour,
Je viens à vous car je galère un peu avec VBA pour créer une fonction, je m'explique.
L'idée serait que n'importe qui puisse, dans les cellules non verrouillées, ajouter des entrées, voire les modifier, mais lorsque la cellule est remplie, qu'ils ne puissent plus en supprimer le contenu. D'autre part, les personnes possédant le code protégeant la feuille auraient accès à un bouton "Supprimer la ligne", qui leurs permettrait de supprimer les entrées.
Pour exemple concret entre un Cadre et un employé:
> Employé rempli une ligne avec des informations. Pour éviter que ces informations ne soient détruites par un autre employé, par mégarde, les employés ne peuvent pas supprimer les valeurs contenues dans les cellules.
> Cadre désactive la protection de la feuille, de peut supprimer les lignes obsolètes via le bouton.
J'avais tenté ma chance avec les codes suivant:
Qui me permettait d'empêcher la suppression des valeurs, et avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim Valeur As Variant Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("A3:K9999")) Is Nothing Then Application.EnableEvents = False If Target = "" Then Target = Valeur Application.EnableEvents = True End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Valeur = Target.Value End Sub
Affecté à un bouton, qui me permettait de supprimer une ligne. Malheureusement, lorsque je tente de supprimer une des lignes concernées par le premier code, une erreur survient avec une proposition de débogage (VBA n'arrive pas à gérer le fait de garder le contenu ET de vouloir supprimer une ligne, vu que ce sont des instruction contradictoires).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Sub sbVBS_To_Delete_Active_Rows() Rows(ActiveCell.Row).Delete End Sub
Si quelqu'un peut m'aider, ce serait vraiment cool !![]()
Partager