Bonjour,
Absent durant toute la semaine, j'ai pu tester votre formule et la traduire en VBA : voilà ce qu'elle donne sur le tableau d'origine et qui sera à adapter aux propres besoins de chacun en fonction du tableau considéré.
Selection.FormulaArray = "=INDEX(R1C[-1]:R649C[-1],MAX(IF(R1C[-38]:R649C[-38]=RC[-38],ROW(R1C[-1]:R649C[-1]))))"
A nouveau, un grand merci à vous, Cisco car je n'aurais assurément pas trouver la solution.
Je bute sur un autre problème: je précise que la feuille de "Destination" contient plus de lignes que la feuille "Origine", que le même numéro peut se retrouver plusieurs fois en colonne I de la feuille de Destination alors qu'il n'apparaît qu'une fois en colonne G de la feuille d'origine. De plus, les données ne sont pas triées de la même façon :
De la feuille Origine vers la feuille Destination, pas de problème, ça fonctionne bien (ex ci-dessous)
Feuille Destination :
Set plage = Range("AO1:AO" & Cells(Rows.Count, "J").End(xlUp).Row)
plage.Formula = "=index(Origine!AF:AF,match( I1,Origine!G:G))"
plage.Value = plage.Value
plage.NumberFormat = "000"
" La formule fonctionne bien"
Alors, j'ai voulu faire l'inverse, passer de la Destination vers l'Origine (cette dernière contient moins de lignes)
Feuille Origine
Set plage = Range("AM1:AM" & Cells(Rows.Count, "J").End(xlUp).Row)
plage.Formula = "=index(Destination!AQ:AQ,match( G1,Destination!I:I))"
plage.Value = plage.Value
plage.NumberFormat = "000"
Et là, je ne retrouve plus la correspondance exacte.
Est ce que cela provient du fait que je veux réaffecter les données sur un tableau contenant moins de lignes ?
Quelqu'un a-t-il une idée ?
Cordialement