Code vba excel 2007, déplacer une ligne

bonjour tt le monde
j'ai besoin de votre précieuse aide sur excel
bref, j'ai un tableau de presque 1000 ligne
le problème que je n'arrive pas a compose le bon code vba qui me permettra de faire une recherche sur tous les cellules de le colonne D,ne i et si il trouve une cellule qui commence par exemple de 00150, coupe toute le ligne et la déplacer a la première ligne vide de la feuille 2
j'attends votre retour pcqe je commence a flipper
merci d'avence

3 réponses

  1. Bonjour,

    code pas des plus top, mais ca marche, ici code pour un bouton sur feuille 1

    Sub Bouton1_Cliquer()
    With Worksheets("feuil1")
    Recherche = "00150"
    'derniere cellule non vid ecolonne A
    derlig = .Range("A" & Rows.Count).End(xlUp).Row
    'mise en memoire plage de cellules
    Set Plage = .Range("D1:D" & derlig)
    'nombre de fois ce qui est recherche
    Nb = Application.CountIf(Plage, Recherche)
    'si au moins une fois
    If Nb > 0 Then
    lig = 1
    'boucle de recherche ligne
    For x = 1 To Nb
    lig = .Columns(4).Find(Recherche, .Cells(lig, 4), , xlWhole).Row
    'couper ligne
    .Rows(lig).EntireRow.Cut
    With Worksheets("feuil2")
    .Activate
    'premiere cellule vide colonne A
    Plvid = .Range("A" & Rows.Count).End(xlUp).Row + 1
    'selection cellule A de cette ligne
    .Range("A" & Plvid).Select
    'coloage
    ActiveSheet.Paste
    End With
    Next x
    End If
    End With
    End Sub
    0
    1. Contributeur
      Pour avoir un début de réponse il faudrait ^tre clair....

      ...."le colonne D,ne i et si il ..."
      désolé, mais je n'ai pas compris

      Michel
      0
      1. Bonjour

        moi nom plus

        je perfere copy que cut

        Sub CopyLigne()
        Application.ScreenUpdating = False
        Lig = Feuil2.Cells(Rows.Count, 1).End(xlUp).Row + 1
        Nlig = Cells(Rows.Count, 1).End(xlUp).Row
           For L = Nlig To 2 Step -1
              If Cells(L, 2).Value = "00150" Then
                 Rows(L).Copy
                    Feuil2.Range("A" & Lig).PasteSpecial xlPasteValues
                 Rows(L).Delete
                 Lig = Lig + 1
              End If
           Next
        With Application
           .CutCopyMode = False
           .ScreenUpdating = True
        End With
        End Sub
        


        A+
        Maurice
        0