Copier coller une ligne

Résolu/Fermé
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016 - Modifié par Judge_DT le 6/08/2016 à 02:34
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016 - 4 août 2016 à 14:56
Bonjour le forum
je suis debutant en VBA excel
je veut copier des lignes qui sont subit à une condition dans une autre feuille l'un après l'autre
voila mon tentative
merci !
Sub copier()
Dim DL As Integer
Dim I As Integer
Dim N As Integer
' optimisation
Application.ScreenUpdating = False ' pour gagner du temps : on désactive avant le macro et on réactive aprés
DL = Range("A" & Application.Rows.Count).End(xlUp).Row
N = 1
For I = DL To 9 Step -1
Sheets(1).Select
    If Not IsNumeric(Cells(I, 1).Value) = True Then
    Rows(I).Select
    Rows(I).Copy
    'Rows(I).Delete
    Sheets("Trash").Range("A" & N).PasteSpecial Paste:=xlPasteValues
    'Sheets(1).Range("A7").Value = DL
    End If
Next I
N = N + 1
Application.ScreenUpdating = True
End Sub


A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
4 août 2016 à 13:15
Bonjour Mohamed, bonjour le forum,

Essaie comme ça :

Sub copier()
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OS = Sheets(1) 'définit l'onglet source OS
Set OD = Sheets("Trash") 'définit l'onglet destination OD
'définit la dernière ligne éditée DL de la colonne A de l'onglet source OS
DL = OS.Range("A" & Application.Rows.Count).End(xlUp).Row
For I = DL To 9 Step -1 'boucle inversée sur les lignes I de la ligne DL à la ligne 9
    'condition : si la valeur de la cellule ligne I colonne 1 n'est pas numérique
    If Not IsNumeric(OS.Cells(I, 1).Value) = True Then
        'définit la cellue de destination DEST (A1 si A1 est vide, sinon, la première cellule vide de la colonne A de l'onglet OD)
        Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Range("A" & Application.Rows.Count).End(xlUp).Offset(1, 0))
        OS.Rows(I).Copy 'copie la ligne I de l'onglet source
        DEST.PasteSpecial Paste:=xlPasteValues 'colle les valeurs dans la cellule DEST
        OS.Rows(I).Delete 'supprime la ligne I de l'onglet source OS
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

0
mohamed_2016 Messages postés 31 Date d'inscription mardi 2 août 2016 Statut Membre Dernière intervention 19 août 2016
4 août 2016 à 14:56
merci beaucoup ThauTheme
ça marche convenablement ,,ça ce que j'ai voulais
0