Copier une ligne sur un autre onglet

Résolu
chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -  
chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je souhaiterais copier une ligne d'un onglet pour la rajouter sur un autre onglet à condition que la case de la ligne concernée en colonne A comprenne la valeur "Ok". (pour information, il peut y avoir aussi "en cours", auquel on ne fait rien).
Je pense qu'il faut faire un FOR EACH pour aller tester toutes les valeurs sur la colonne A puisqu'il n'y a pas d'espace.
Par contre, je n'arrive pas à coller la ligne. En fait, je n'arrive pas à avoir la forme de code pour copier une ligne.

Voici ci-dessous ce que j'ai commencé mais ça bloque au niveau de la ligne de copie.

Sub test()
Set etatmission = Range(Range("A1").offset(1,0), Range("A1").End(xlDown))
    For Each etat In etatmission
        Select Case etat.Value
            Case "ok"
                Sheets("second tableau").Range("a1").End(xlDown).Offset(1, 0).Row = etat.row
        End Select
    Next
End Sub


Merci de votre aide par avance.

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bpnjour,

    Combien as tu de lignes (environ) ?

    quelle est la dernière colonne (toujours très lourd de trimbaler une ligne entière) ?

    Au besoin, mettre le classeur sans données confidentielles en pièce jointe sur http://cijoint.fr/
    et coller le lien proposé dans le message de réponse

    Dans l'attente

    0
  2. chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour Michel,

    en effet, nous ne sommes pas obligés de recopier la ligne puisque je n'ai besoin que des des colonnes A à M.
    J'aurais je pense au plus 20 lignes à transférer au cours d'une journée.
    Si sur la case A18 est marqué "ok", alors je devrai copier les cases A18 à M18.
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    on ne boucle que sur le nomnre de "ok"
    "ok" sensible à la casse
    Option Explicit
    '----------
    Sub copier_si_ok()
    Dim Derlig As Byte, Nbre As Byte, Cptr As Byte, Lig1 As Byte, Lig2 As Byte, T_ok

    Application.ScreenUpdating = False
    Sheets(2).Range("A2:M30").ClearContents

    With Sheets(1)
    Derlig = .Columns("A").Find("*", , , , , xlPrevious).Row
    Nbre = Application.CountIf(.Range("A2:A" & Derlig), "ok")
    Lig1 = 1
    Lig2 = 1
    For Cptr = 1 To Nbre
    Lig1 = .Columns("A").Find("ok", .Cells(Lig1, "A"), xlValues).Row
    T_ok = .Range(.Cells(Lig1, "A"), .Cells(Lig1, "M"))
    Lig2 = Lig2 + 1
    Sheets(2).Range("A" & Lig2).Resize(1, 13) = T_ok
    Next
    End With
    Sheets(2).Activate
    End Sub

    0
    1. chrisdemontigny Messages postés 70 Date d'inscription   Statut Membre Dernière intervention  
       
      merci beaucoup!
      Je ne connaissais pas trop les tableaux et la méthode find.
      Maintenant, c'est ok!
      0