Recherche V et report de valeurs correspondantes sur selection

Bonjour à tou(te)s,

Je cherche à créer une sub pour :

(1) parcourir l'ensemble des cellules d'une sélection

(2) confronter la valeur de chacune de ces cellules à un index sur un autre feuillet

(3) reporter la valeur correspondante sur la cellule à droite de la cellule active à l'issue de ce test

Au total, une sorte de "RECHERCHEV" automatisée sur une plage de cellules sélectionnées.

J'ai bricolé un petit code que je vous joints ici.

Il fonctionne lorsque ma sélection ne comporte qu'une cellule.

En revanche, lorsque ma sélection comporte plus d'une cellule, c'est la valeur de la première correspondance qui est répliquée à l'infini.

Qu'est-ce qui m'échappe ? J'ai pas mal cherché avant de vous demander car j'ai l'impression de ne pas être très loin mais je ne trouve pas et en l'état... ma sub ne me sert pas à grand chose si je dois sélectionner à l'unité!

Le code suit:

Sub Correspondance_valeur()
'

'Va chercher la correspondance dans l'index
    Dim MaValeur As Variant
    Dim MaPlage As Range
    Dim MaColonne As Single
    Dim ValeurProche As Boolean
    Dim cellule As Range

    For Each cellule In Selection

    MaValeur = ActiveCell.Value
    Set MaPlage = ThisWorkbook.Sheets("Index").Range("A:B")
    MaColonne = 2
    ValeurProche = False

'Reporte cette correspondance à droite de la cellule active

    cellule.Offset(0, 1).Value = RECHERCHEV(MaValeur, MaPlage, MaColonne, ValeurProche)

    Next cellule

End Sub

Function RECHERCHEV(Valeur_Cherchee As Variant, Table_matrice As Range, No_index_col As Single, Optional Valeur_proche As Boolean)
'fonction RECHERCHEV

On Error GoTo RECHERCHEVerror
    RECHERCHEV = Application.VLookup(Valeur_Cherchee, Table_matrice, No_index_col, Valeur_proche)
    If IsError(RECHERCHEV) Then RECHERCHEV = "#N/A"

Exit Function
RECHERCHEVerror:
    RECHERCHEV = "#N/A"
End Function

Ainsi que mon fichier d'exemple.

Un grand merci d'avance à vous pour votre aide !!!

10exemple.xlsm (17.10 Ko)

Bonjour guillaumeplougoulm, le forum,

Essaie avec:

MaValeur = cellule.Value

Un essaie de simplification....

Sub Test()

    Dim mavaleur As Variant
    Dim maplage As Range, cellule As Range
    Dim resultat As Variant

     Set maplage = Sheets("Index").Range("A1:B" & Sheets("Index").Range("A" & Rows.Count).End(xlUp).Row) '..plage de recherche

     With Sheets("Valeurs")
       For Each cellule In Selection '..pour chaque cellule selectionnée
        If cellule.Column = 1 Then '....si la selection est en colonne A
          mavaleur = cellule.Value
          resultat = IIf(IsError(Application.VLookup(mavaleur, maplage, 2, False)), "Aucune correspondance", Application.VLookup(mavaleur, maplage, 2, False))
          cellule.Offset(0, 1) = resultat
        End If
       Next cellule
     End With
End Sub

Cordialement,

Merci beaucoup !

Ca fonctionne avec MaValeur = cellule.Value !

Merci aussi pour ta tentative de simplification, que je vais tenter de m'approprier.

Rechercher des sujets similaires à "recherche report valeurs correspondantes selection"