Copier coller une ligne [Résolu/Fermé]

Signaler
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
-
Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016
-
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


1 réponse

Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
153
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

Messages postés
31
Date d'inscription
mardi 2 août 2016
Statut
Membre
Dernière intervention
19 août 2016

merci beaucoup ThauTheme
ça marche convenablement ,,ça ce que j'ai voulais