Modif macro, si contient ".." copie dans onglet sans doublon
Bonjour,
J'ai une macro qui marche super bien cependant !!! Au fur et à mesure de son utilisation, je me rend compte qu'il faurdrait quelques changements que je n'arrive pas à effectuer....
Le grand principe de cette macro c'est que si la colonne K contient le statut ACTIF elle copie la ligne dans l'onglet REX et si on modifie cette ligne depuis l'onglet de départ elle met égamelement à jour l'onglet REX.
Seulement, la copie ce fait uniquement si on intervient en colonne B.. Alors que finalement les statuts peuvent être changés à la mains et du coup les lignes ne sont pas importées... Il faut venir en colonne B entrer dans la cellule de la ligne correspondante et la mettre à jour pour que la copie soit effectuée.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derLn&, ligne&, Ln As Range, dt$
If Target.Count > 1 Then Exit Sub
derLn = Me.Range("I" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False
If Target.Column = 2 Or Target.Column = 9 Then
If Target.Row > 5 And Target.Row <= derLn Then
If Me.Range("K" & Target.Row) = "ACTIF" Then
dt = Me.Range("I" & Target.Row).Value
Set Ln = Me.Range("A" & Target.Row & ":V" & Target.Row)
With Worksheets("REX")
ligne = .Range("K" & .Rows.Count).End(xlUp).Row + 1
If ligne < 6 Then ligne = 6
If Application.CountIf(.Range("I6:I" & ligne), dt) = 0 Then _
.Range("A" & ligne).Resize(, 22).Value = Ln.Value
End With
End If
End If
ElseIf Not Intersect(Target, Me.Range("M6:U" & derLn)) Is Nothing Then
If Me.Range("K" & Target.Row) = "ACTIF" Then
dt = Me.Range("I" & Target.Row).Value
Set Ln = Me.Range("A" & Target.Row & ":V" & Target.Row)
With Worksheets("REX")
ligne = .Range("I:I").Find(dt, lookat:=xlWhole).Row
.Range("A" & ligne).Resize(, 22).Value = Ln.Value
End With
End If
End If
Application.ScreenUpdating = True
End SubMerci d'avance !!!
Bonjour,
il faut revoir tes test et définir ce qu'il doit ce passer lorsque une cellule de la colonne K change de valeur ...
Colonne K = 11 et donc la condition suivante n'est pas respectée :
If Target.Column = 2 Or Target.Column = 9 Thendu coup tu passe au else :
ElseIf Not Intersect(Target, Me.Range("M6:U" & derLn)) Is Nothing Thenla colonne K n'étant pas dans la plage M6:U...cette condition n'est elle aussi pas respectée ...
du coup sur changement d'état en colonne K ton code est inactif...
Bonjour pierre !!
Merci de ton aide !! Cependant là apparaît un nouveau problème .. Le statut ACTIF est rappatrié par formule. Et si au départ j'étais en statut Non Actif et que depuis ma source le statut passe en ACTIF et vient donc changer la valeur automatiquement, la ligne ne sera pas copié ..
Edit-----------------------------
Est-ce possible de comparer l'onglet Départ et Arrivé (mon onglet REX) et de combler les manques avec une fonction en Worksheet_Activate ?