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 :
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
Mes feuilles A, B et C sont respectivement : Feuil3, GSE43580_series_matrix (2) et Resultat
Je vous aurais bien joint mon fichier, mais sa taille m'en empêche.

Merci par avance pour votre aide

Alex