Bonjour,
Je cherche à créer une macro permettant de balayer l'ensemble des lignes d'un tableur excel pour rechercher une string (text) spécifique dans une colonne et pouvoir copier l'ensemble de la ligne concernée dans une autre feuille de calcul.
Cependant, lors de la copie de la ligne dans une autre feuille excel, je souhaite en plus supprimer toutes les autre string de chaque cellule concernée. Exemple:
Feuil1:
colonne A colonne B colonne C Test 10 Essai; test1; test2; test-generique3; Test 10 Essai; test2; Test 10 Essai; test4; test2; test-generique3; Test 10 Essai; test1; test5;
Feuil2:
colonne A colonne B colonne C Test 10 Essai; test1; test2; test-generique3; Test 10 Essai; test1; test5;
Le code que j'ai écrit ci-dessous effectue bien l'opération de recherche du texte "test1" et va bien copier les lignes concernées dans la feuil2 de calcul.
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 Sub SearchForString() Dim LSearchRow As Integer Dim LCopyToRow As Integer On Error GoTo Err_Execute 'Start search in row 4 LSearchRow = 4 'Start copying data to row 2 in Sheet2 (row counter variable) LCopyToRow = 2 While Len(Range("A" & CStr(LSearchRow)).Value) > 0 'If value in column C = "test1", copy entire row to Sheet2 'If Range("R" & CStr(LSearchRow)).Value = "Mail Box" Then If InStr(1, Range("C" & CStr(LSearchRow)).Value, "test1") > 0 Then 'Select row in Sheet1 to copy Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select Selection.Copy 'Paste row into Sheet2 in next row Sheets("Feuil2").Select Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select ActiveSheet.Paste 'Move counter to next row LCopyToRow = LCopyToRow + 1 'Go back to Sheet1 to continue searching Sheets("Feuil1").Select End If LSearchRow = LSearchRow + 1 Wend 'Position on cell A3 Application.CutCopyMode = False Range("A3").Select MsgBox "All matching data has been copied." Exit Sub Err_Execute: MsgBox "An error occurred." End Sub
Cependant, je n'arrive pas à supprimer l'ensemble des string de chaque cellule pour garder seulement la string "test1".
Résultat attendu:
--------------------
Feuil2:
colonne A colonne B colonne C Test 10 test1; Test 10 test1;
Est-ce que vous auriez une idée s'il vous plaît?
Cordialement,
Partager