Copier coller une ligne
Résolu
mohamed_2016
Messages postés
33
Statut
Membre
-
mohamed_2016 Messages postés 33 Statut Membre -
mohamed_2016 Messages postés 33 Statut Membre -
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 !
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
-
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