Bonjour tout le monde,
Je viens vous appeler au secours concernant la fonction match en VBA.
L'objectif est de restituer la valeur de la cellule renvoyée dans la plage destination. Celà fonctionne pour d'autre champs dans le même fichier, même manip. Mais pour l'un d'entre eux je'y parviens pas.
Je joins le fichier en PJ. L'objectif est de renvoyé la valeur de la colonne Décision" de l'onglet sélection vers la colonne info 1 (L) de l'onglet synth, si le nom correspond.
J'ai rendu le fichier neutre en intitulés car c'est pour du scolaire et confidentiel.
Lorsque j'utilise le code ci dessous, pas d'anomalie, mais rien ne se passe...
J'ai vérifié, ce n'est pas à cause de la reconnaissance de correspondance (enfin jen e pense pas), car cela fonctionne avec la formule Equiv qui correspond à Match.
Pouvez vous m'aider svp ?
Merci par avance pour votre aide!
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 Sub info() Dim Selection As Worksheet Dim Synth As Worksheet Dim Sreinfo1 As Range Dim Destinfo1 As Range Dim cel As Range Dim Ligne As Range Set Selection = Worksheets("Selection") Set Synth = Worksheets("Synth") 'défini les plages With Selection Set Sreinfo1 = .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With With Synth Set Destinfo1 = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)) End With 'parcour la plage de la feuille de destination For Each cel In Destinfo1 'gestion de l'erreur de la valeur non trouvé On Error Resume Next Ligne = Application.WorksheetFunction.Match(cel.Value, Sreinfo1, 0) + 3 'rajoute 3 car départ de plage en ligne 4 'si pas d'erreur, récupère les valeurs en colonnes E:G et les inscrit en colonne AN:AP If Err.Number = 0 Then cel.Offset(, 9).Value = Selection.Cells(Ligne, 1).Offset(, 2).Value End If Next cel End Sub
Partager