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
Partager