Option Explicit ' Déclaration valable pour l'ensemble des subs de la feuille Dim memo As String Private Sub Worksheet_Change(ByVal target As Range) Dim j As Long j = 1 'Compteur de colonnes Do While Cells(1, j) <> "Vérificateur" j = j + 1 Loop If target.Column = j Then 'Opérations à réaliser si on RENSEIGNE une cellule initialement vide de la colonne Vérificateur If memo = vbNullString And target.Value <> vbNullString Then 'Ajout de la date dans la colonne suivante Cells(target.Row, j + 1).Value = "le " & Format(Date, "dd/mm/yyyy") '... 'Opérations à réaliser si on VIDE une cellule de la colonne Vérificateur ElseIf memo <> vbNullString And target.Value = vbNullString Then Cells(target.Row, j + 1).Value = vbNullString 'Pour empécher la modification des initiales sans raison ElseIf memo <> vbNullString And target.Value <> memo And target.Value <> vbNullString Then MsgBox ("blabla") Cells(target.Row, j).Value = memo End If End If End Sub Private Sub worksheet_selectionchange(ByVal target As Range) 'Retient le contenu de la cellule memo = target.Value End Sub
Option Explicit ' Declaration valable pour l'ensemble des Subs de la Feuille Dim Memo As String Private Sub worksheet_change(ByVal Target As Range) ' Paramètres Dim j As Long Dim MotCle As String ' Recherche colonne avec mot clé "vérificateur" MotCle = "Vérificateur" j = 1 'compteur de colonnes Do While UCase(Cells(1, j).Value) <> UCase(MotCle) j = j + 1 Loop ' Si Cellule vérificateur non vide => remet le contenu initial de la cellule If Cells(Target.Row, j) <> vbNullString Then Target.Value = Memo Exit Sub End If ' Opérations à réaliser si on renseigne une cellule de la colonne vérificateur If Target.Column = j Then If Target.Value <> vbNullString Then 'ajout de la date dans la colonne suivante Cells(Target.Row, j + 1).Value = "le " & Format(Date, "dd/mm/yyyy") 'opérations à réaliser si on vide une cellule de la colonne vérificateur Else Cells(Target.Row, j + 1).Value = vbNullString End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Retient le contenu de la cellule Memo = Target.Value End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'désactive la protection ActiveSheet.Unprotect 'Trouve la colonne de vérificateur j = Cells.Find(What:="vérificateur", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Column 'Trouve le dernier élément de la colonne vérificateur dernier = Cells(65536, j).End(xlUp).Row 'déverrouille toutes les cellules Cells.Locked = False Cells.FormulaHidden = False 'ajout de la date dans la colonne suivante If Target.Item(1, 1).Value <> vbNullString Then Cells(Target.Row, j + 1).Value = "le " & Format(Date, "dd/mm/yyyy") ' verrouille les lignes de la colonne vérificateur non vide For t = 1 To dernier If Cells(t, j) <> vbNullString Then Rows(t).Locked = True Rows(t).FormulaHidden = False End If Next t 'déverrouille la colonne vérificateur => permet les modifs Columns(j).Locked = False Columns(j).FormulaHidden = False 'active la protection des cellules vérrouillées ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question