Problème de ligne + simplification code
Bonjour à tous,
Le but de la macro : lire chaque ligne de ma feuille 1 puis en fonction de la colonne 7 copie/coller les 3 colonnes suivantes (soit avec ELSE soit avec ELSEIF) dans une feuille 2
Mon problème : J'ai un problème avec mon code, je voudrais qu'il commence à la ligne 3 de la feuille 2, car j'ai des en-tête sur les 2 première lignes. Or actuellement la partie de ELSE qui se trouve à gauche commence à la ligne 2. Je n'ai pas de soucis du côté du ELSEIF....
Petit plus : De plus avait quelque chose de moins long car ce code met à peu près 5 minutes pour exécuter mes 8000 lignes :(:(
Et je suis persuadé que on peut le faire en très peu de ligne mais étant mauvais sur vba je n'y arrive pas. 8-)
Merci à vous pour votre aide précieuse. :mouarf:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
Option explicit
Public Sub CopyRows()
Dim FinalRow As Integer
Dim x As Integer
Dim Thisvalue As String
Dim NextRow As Integer
Sheets(1).Select
' Find the last row of data
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' Loop through each row
For x = 3 To FinalRow
' Decide if to copy based on column G
Thisvalue = Cells(x, 7).Value
If Thisvalue = "B" Then
Cells(x, 8).Resize(1, 3).Copy
Sheets(2).Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets(1).Select
ElseIf Thisvalue = "S" Then
Cells(x, 8).Resize(1, 3).Copy
Sheets(2).Select
NextRow = Cells(Rows.Count, 5).End(xlUp).Row + 1
Cells(NextRow, 5).Select
ActiveSheet.Paste
Sheets(1).Select
End If
Next x
End Sub |