Copier une ligne sur un autre onglet

Résolu/Fermé
chrisdemontigny Messages postés 64 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015 - Modifié par pijaku le 19/11/2014 à 07:45
chrisdemontigny Messages postés 64 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015 - 22 nov. 2014 à 19:57
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.
A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 nov. 2014 à 07:07
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
chrisdemontigny Messages postés 64 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015
19 nov. 2014 à 14:49
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 nov. 2014 à 17:31
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
chrisdemontigny Messages postés 64 Date d'inscription mercredi 19 septembre 2012 Statut Membre Dernière intervention 17 mars 2015
22 nov. 2014 à 19:57
merci beaucoup!
Je ne connaissais pas trop les tableaux et la méthode find.
Maintenant, c'est ok!
0