XL 2016 Suivi des modifications d'un fichier excel

  • Initiateur de la discussion Initiateur de la discussion nae104
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nae104

Guest
Bonjour,
Je viens de trouver ce code permettant d'afficher des commentaires(utilisateur,date,valeur avant et valeur après) dans toute cellule modifiée. Il fonctionne bien sauf que les utilisateurs n'arrivent pas à supprimer une ligne ou l'insérer !!

Je sais pas si je dois ajouter des lignes à ce code pour permettre l’insertion et la suppression des lignes !?
Ou si quelqu’un a une autre idée pour suivre les modifications sans partage du classeur parce qu'il contient des macros

Merciii 🙂

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
Const xRg As String = "A1:Z1000"
Dim strOld As String
Dim strNew As String
Dim strCmt As String
Dim xLen As Long
With Target(1)
If Intersect(.Cells, Range(xRg)) Is Nothing Then Exit Sub
strNew = .Text
Application.EnableEvents = False
Application.Undo
strOld = .Text
.Value = strNew
Application.EnableEvents = True
strCmt = "Edit: " & Format$(Now, "dd Mmm YYYY hh:nn:ss") & " by " & _
Application.UserName & Chr(10) & "Previous Text :- " & strOld
If Target(1).Comment Is Nothing Then
.AddComment
Else
xLen = Len(.Comment.Shape.TextFrame.Characters.Text)
End If
With .Comment.Shape.TextFrame
.AutoSize = True
.Characters(Start:=xLen + 1).Insert IIf(xLen, vbLf, "") & strCmt
End With
End With

End Sub
 
Solution
Bonjour Nae,
Une solution simple est d'interdire la macro lorsque plusieurs cellules sont sélectionnées ( cas pour l'insertion ou la suppression ).
Il suffit de rajouter "If Target.Count > 1 Then Exit Sub" en début de macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Const xRg As String = "A1:Z1000"
...
...
Reste à savoir si ça couvre tous vos cas.
Bonjour Nae,
Une solution simple est d'interdire la macro lorsque plusieurs cellules sont sélectionnées ( cas pour l'insertion ou la suppression ).
Il suffit de rajouter "If Target.Count > 1 Then Exit Sub" en début de macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Const xRg As String = "A1:Z1000"
...
...
Reste à savoir si ça couvre tous vos cas.
 
Bonjour

Attention, Target.count peut présenter des effets de bords en cas de sélection de toute la feuille en utilisant le carré à l'intersection des entêtes de lignes et de colonnes.
Mieux vaut utiliser CountLarge
VB:
If Target.CountLarge > 1 Then Exit Sub

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
4
Affichages
488
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
538
Réponses
4
Affichages
733
Retour