Bonjour à tous,
Je vous expose mon problème, quand je supprime une cellule, pas de problème. C'est lorsque je supprime une ligne que l'erreur apparaît puisqu'en effet Range("D6:D2000") et Range("F6:BXY2000") sont supprimés en même temps
alors la ligne ci dessous déclare une erreur, seulement je ne vois pas comment résoudre :
.Cells(MaLigne, 1).Resize(1, 8).Value = Array(Environ("USERNAME"), _
Cells(Target.Row, 2).Value, _
ValCell, Target.Value, _
IIf(Target.Column = 4, "Révision " & Target.Value & " du document " & Cells(Target.Row, 2).Value, _
"Prise en compte de la révision " & Target.Value & " du document " & Cells(2, Target.Column).Value), _
Date, _
Hour(Now) & ":" & Minute(Now), Pourquoi.TextBox1.Text)
Avec le code en entier
Option Explicit
Dim Continuer As Integer, MaLigne As Long
Dim ValCell As Variant
Dim PreviousValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
' on vérifie qu'on est sur l'une des deux plages, et on demande de continuer ou non
If Not Application.Intersect(Target, Range("D6:D2000")) Is Nothing _
Or Not Application.Intersect(Target, Range("F6:BXY2000")) Is Nothing Then
Continuer = MsgBox("Êtes-vous certain de modifier la révision ", vbYesNo + vbExclamation + vbDefaultButton2)
Else
Exit Sub
End If
Application.EnableEvents = False
With Worksheets("Modifications")
' calcul de la première ligne vide sur les 8 colonnes
MaLigne = .UsedRange.Resize(, 8).Find("*", , , , xlRows, xlPrevious).Row + 1
' si on ne continue pas
If Continuer = vbNo Then
Target.Value = ValCell
' si on continue
Else
Pourquoi.Show
' on injecte les 8 valeurs directement en passant un tableau
.Cells(MaLigne, 1).Resize(1, 8).Value = Array(Environ("USERNAME"), _
Cells(Target.Row, 2).Value, _
ValCell, Target.Value, _
IIf(Target.Column = 4, "Révision " & Target.Value & " du document " & Cells(Target.Row, 2).Value, _
"Prise en compte de la révision " & Target.Value & " du document " & Cells(2, Target.Column).Value), _
Date, _
Hour(Now) & ":" & Minute(Now), Pourquoi.TextBox1.Text)
End If
End With
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D6:D2000")) Is Nothing _
Or Not Application.Intersect(Target, Range("F6:BXY2000")) Is Nothing Then
ValCell = Target
End If
End Sub
Merci d'avance pour votre aide