Re : Insertion lignes sans rafraichissement écran
Voila le code dans un module:
Sub AnnuleBon()
Dim TBb As Worksheet, TBc As Worksheet, TBm As Worksheet, Zx As Range, Zy As Range, I As Integer, j As Integer, K As String, Ln As Integer, Lf As Integer
Dim Lire1 As String, Lire2 As String, Lire3 As String, TBr As Worksheet, Zw As Range, NbArt As Integer, Nlig As Integer, MotDePasse As String
On Error Resume Next
Lire1 = "?????????"
Lire2 = "?????????"
Lire3 = "pour info.Vous êtes sûr de bien vouloir continuer ?"
MotDePasse = "1111111111"
Set TBc = ThisWorkbook.Worksheets("CONSULT")
Set TBb = ThisWorkbook.Worksheets("RECAP_BONS")
Set TBm = ThisWorkbook.Worksheets("MOUV_STK")
Set TBr = ThisWorkbook.Worksheets("Creances")
j = TBc.Range("T7").Value - 1
K = TBc.Range("T9").Value
NbArt = TBm.Range("R1").Value
Set Zx = TBb.Columns(1).Find(What:=TBc.[Bon_Ndx].Value)
Set Zy = TBm.Columns(1).Find(What:=TBc.[Bon_Ndx].Value)
Set Zw = TBr.Columns(1).Find(What:=TBc.Range("F7").Value)
Application.ScreenUpdating = False
Ln = Zy.Row
Lf = Ln + j
Nlig = (Lf - Ln)
'---------------
If Zx Is Nothing Then
Exit Sub
Else
If MsgBox(Lire1 + vbCrLf + Lire2 + vbCrLf + Lire3, vbQuestion + vbYesNo, NomApp) = vbYes Then
For I = 0 To 4 Step 1
Zx.Offset(0, 17 + I).Value = Zx.Offset(0, 8 + I).Value
Zx.Offset(0, 8 + I).ClearContents
Next I
Zx.Offset(0, 22).Value = Zx.Offset(0, 15).Value
Zx.Offset(0, 15).ClearContents
Zx.Offset(0, 16).Value = 1
Zx.Offset(0, 23).ClearContents
Zx.Offset(0, 24).ClearContents
Zx.Offset(0, 25).ClearContents
Zx.Offset(0, 26).ClearContents
Zx.Offset(0, 27).Value = IIf(K = "E", "ENTREE ANNULEE", "FACTURE ANNULEE")
Sheets("MOUV").Rows(Ln & ":" & Lf).Delete
Sheets("MOUV").Rows(NbArt & ":" & NbArt + Nlig).EntireRow.Insert Shift:=xlDown
TBc.Unprotect Password:=MotDePasse
TBc.Rows(22 & ":" & 40).EntireRow.Hidden = True
TBc.Protect Password:=MotDePasse
End If
End If
If K = "S" Then
If Zw Is Nothing Then Exit Sub
For I = 1 To 12 Step 1
Zw.Offset(0, 3 + I).ClearContents
Next I
End If
Application.ScreenUpdating = True
End Sub