Couper coller ligne condition [Résolu/Fermé]

Signaler
-
 May -
Bonjour,

Je suis complètement novice sur le langage VBA, et malgré mes recherches sur les forum et livre, je ne trouve pas.

Dans la Feuille nommée "OME", j'ai un tableau avec plusieurs lignes et lorsque dans la colonne M, on entre "KO", j'aimerai que la ligne soit couper et coller dans une autre feuille nommée "Analyse".
Par contre, lorsque l'on clique sur le bouton qui lance l'action VBA, les lignes qui ont été coller précédemment ne doivent pas être écrasées par les nouvelles lignes renseignées.

Pouvez vous m'aider a écrire le code pour cette action ?

MERCI MERCI!

1 réponse

Messages postés
16432
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
14 avril 2021
3 162
Bonjour

Option Explicit
'-----------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Derlig As Integer, Lig As Integer
Dim Tampon, Ligvid As Integer
'dernière ligne du tableau
Derlig = Columns("M").Find(what:="*", searchdirection:=xlPrevious).Row
On Error GoTo fin
'conditions de déclenchement : "OK" et dans le tableau colonne M
If Not Intersect(Target, Range("M2:M" & Derlig)) Is Nothing And Target = "OK" Then
' ligne demandée
Lig = Columns("M").Find("OK", Range("M1"), xlValues).Row
'mémorisation de la plage à transfèrer
Tampon = Range(Cells(Lig, "A"), Cells(Lig, "L"))
With Sheets("Analyse")
'1° ligne vide
Ligvid = .Columns("A").Find("", .Range("A1")).Row
'écriture de la plage
With .Range(.Cells(Ligvid, "A"), .Cells(Ligvid, "L"))
.Value = Tampon
'encadre la ligne
.Borders.Weight = xlThin
End With
End With

'destruction de la ligne
Rows(Lig).Delete
End If
fin:
End Sub



comment installer ?

copier cette macro
clic droit sur le nom de l'onglet de la feuille "OME" (en bas de l'écran)
visualiser le code
coller

la maquette de W
http://www.cjoint.com/c/FFog4uBp3Ut

 Michel
Un grand merci! C'est juste parfait!!! :)))

Une dernière question, comment faire pour que le couper coller ne se fasse que dans la limite du tableau (Colonne A à colonne N) et pas toutes la lignes?

Sinon, PARFAIT :-x
Messages postés
16432
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
14 avril 2021
3 162 > May
au lieu de Rowss(Lig).delete

écris
 'destruction de la ligne
Range(Cells(Lig, "A"), Cells(Lig, "M")).Delete
'et si on veut voir le résultat des courses (j'avais oublié..)
Sheets("Analyse").Activate


et pense à remplacer "L" par "N" dans la macro
Super!
Vous êtes mon héros ;-)