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.


Merci à vous pour votre aide précieuse.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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