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 !

nae104

XLDnaute Nouveau
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
250
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
233
Réponses
4
Affichages
362
Retour