Bonjour à tous,
Je débute avec la créations de macros et après pas mal de temps je me retrouve coincé.
Mon objectif est de créer une macro qui permettrait à partir de la liste d'une feuille A, de rechercher la correspondance dans une colonne de la feuille B, et de copier la ligne (depuis la feuille B) de cette fameuse cellule correspondante vers une feuille C. J'ai oublié de signaler qu'il peut exister plusieurs résultats dans la feuille B mais que je peux me satisfaire de la première correspondance pour chaque recherche.
Dans ce but j'ai réaliser le code suivant. Mon idée était de la faire tourner pour ma ligne 2 avec de l'automatiser pour la lecture automatique des lignes A, mon classeur étant "un peu" lourd.
Mon problème est que :
- il me sélectionne bien la cellule, en fait une copie fidèle (rapportée en "I31-Feuil3), variable : prot
- Effectue bien la recherche dans la feuille B, mais sélectionne une ligne ne correspondant pas à la variable recherchée
- Colle bien la ligne sélectionnée sur la feuille C.
Mon code est le suivant :
Mes feuilles A, B et C sont respectivement : Feuil3, GSE43580_series_matrix (2) et Resultat
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 Application.CutCopyMode = False 'Nettoyage cache Dim ppapier Dim prot 'Définition ppapier et prot comme variable prot = Sheets("Feuil3").Range("E2") 'Ajout de la valeur prot If prot <> "" Then Sheets("GSE43580_series_matrix (2)").Activate With Sheets("GSE43580_series_matrix (2)") Range("E:E").Find What:=prot, LookAt:=xlWhole Application.CutCopyMode = False ActiveCell.EntireRow.Copy End With With Sheets("Resultat").Activate NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste End With Sheets("Feuil3").Select Else With Sheets("Resultat").Activate NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select End With Sheets("Feuil3").Select End If With Sheets("Feuil3") .Range("I31").Value = prot End With End Sub
Je vous aurais bien joint mon fichier, mais sa taille m'en empêche.
Merci par avance pour votre aide
Alex
Partager