1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
Option Base 1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derLig As Long, lignVide As Long, tablo(1, 9), doublon As Variant
' ici j 'ai reuni les 2 conditions de sortie de sub
If Target.Column <> 12 Or Target.Row <> Range("A" & Rows.Count).End(xlUp).Row Then Exit Sub
derLig = Target.Row ' ici si on est pas sorti alors on est forcement sur la dernière ligne
If Target = "RP" Then
'doublon va devenir la celle qui contient le doublon
Set doublon = Sheets(1).Range("a1:a" & Target.Row - 1).Find(Cells(derLig, 1).Value, LookIn:=xlValues)
If Not doublon Is Nothing Then ' si le doublon n'est pas rien alors message
MsgBox "il y deja cette valeur en ligne :" & doublon.Row
Else
' sinon on fait le boulot et sans tout ces activate qui paralysent le system
'il y a 7 valeurs que l'on met dans la variables tablo dans les meme colonne que les colonne du (sheets"GM")qui est la destination
tablo(1, 1) = Cells(derLig, 1): tablo(1, 2) = Cells(derLig, 4): tablo(1, 4) = Cells(derLig, 11)
tablo(1, 5) = Cells(derLig, 2): tablo(1, 8) = Cells(derLig, 8): tablo(1, 9) = Cells(derLig, 9)
With Worksheets("GM")
.Activate
.Unprotect Password:="XENNA" ' on déprotège le sheets
lignVide = IIf(.Range("A" & Rows.Count).End(xlUp).Row = 1, .Range("A" & Rows.Count).End(xlUp).Row, .Range("A" & Rows.Count).End(xlUp).Row + 1) ' on cherche la première ligne vide en partant d'en bas
.Cells(lignVide, 1).Resize(1, 9) = tablo ' et enfin on repose le tablo (plus communément appelé "TRANSPOSE")
.Protect Password:="XENNA"
End With
End If
End If
End Sub |
Partager