Couper coller ligne condition

Résolu/Fermé
May - 13 juin 2016 à 15:24
 May - 15 juin 2016 à 12:57
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 14/06/2016 à 08:59
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
0
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > May
Modifié par michel_m le 14/06/2016 à 16:56
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
0
Super!
Vous êtes mon héros ;-)
0