RechercheV

Bonjour

Je souhaite appliquer une fonction RechercheV à une plage de cellule. J'ai le code ci-dessous, sauf que je n'arrive pas à l'appliquer à un ensemble de cellules.

Le second problème, c'est que le nombre de cellules est variable. J'avais pensé à Range(...).End(Down), sauf que je ne sais pas comment l'appliquer à la plage de cellules, ni comment afficher les résultats dans une autre colonne

MERCI d'avance pour votre aide

Cordialement

Sub rechv()

Dim Resultat

Resultat = Application.VLookup(Range("A1"), Range("B1:C9"), 2, False)

Range(A7).Value = Resultat

End Sub

Bonjour, essaye ceci :

Sub RechercheV()

Max = Range("B65000").End(xlUp).Row

Code = Application.VLookup(Range("A1"), Range("B1:C" & Max), 2, False)

If Not IsError(Code) Then
Range("A7") = Code
Else
MsgBox "Information non trouvée...", vbInformation, "Erreur"
End If

End Sub

Bonjour, essaye ceci :

Sub RechercheV()

Max = Range("B65000").End(xlUp).Row

Code = Application.VLookup(Range("A1"), Range("B1:C" & Max), 2, False)

If Not IsError(Code) Then
Range("A7") = Code
Else
MsgBox "Information non trouvée...", vbInformation, "Erreur"
End If

End Sub

Bonjour

Merci pour ton retour

Cela fonctionne pour une cellule ("A1"). Mais si je souhaite l'appliquer à plusieurs cellules? quelle sera la procédure dans ce cas?

Et comment récuperer les résultats?

Merci beaucoup

Ce que tu dis c'est que ton critère de recherche ne se trouve pas forcément en A1 ou tu as plusieurs critères de recherche ?

Ce que tu dis c'est que ton critère de recherche ne se trouve pas forcément en A1 ou tu as plusieurs critères de recherche ?

J'ai plusieurs critères de recherches. Je souhaiterais appliquer la même formule recherchev à la cellule A1, A2, A3 ... jusau'à la fin de la colonne

Bonjour,

Joins un petit fichier pour une réponse adaptée du forum.

Cdlt.

Bonjour,

Joins un petit fichier pour une réponse adaptée du forum.

Cdlt.

Bonjour

Merci pour ton retour

j'ai mis un petit exemple de ce que je souhaiterais avoir si cela possible.

Je vais appliquer le code à des colonnes qui ont un nombre de cellules variables à chaque fois.

je souhaiterais appliquer le code aux données de la colonne A, et récupérer les résultats de la recherche verticale dans la colonne D.

Merci d'avance

Cordialement

Bonjour,

Un exemple à adapter.

Cdlt.

Bonjour,

Un exemple à adapter.

Cdlt.

ExempleRechercheV.xlsm

Bonjour

Merci beaucoup pour ton retour. ca marche bien.

Je vais essayer d'adapter le code et de le comprendre aussi

Merci encore une fois

Cordialement

Re,

Pour info. :

Public Sub Lookup_values()
'Déclaration des variables
Dim lo As ListObject
Dim rCriteria As Range, rData As Range, rCell As Range, Cell As Range, r
    'Initialisation des variables
    '(Toutes les données sont sous forme de tableaux structurés)
    Set lo = Range("T_Résultats").ListObject
    Set rCriteria = Range("T_Critères")
    Set rData = Range("T_Données")

    With lo
        'RAZ tableau T_Résultats
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        'Initialisation cellule de destination
        Set rCell = .InsertRowRange.Cells(1)
    End With

    For Each Cell In rCriteria
        'RechercheV() = Vlookup() en langue US
        r = Application.VLookup(Cell.Value, rData, 2, False)
        If Not IsError(r) Then
            'Cellule de destination dans T_Résultats
            rCell.Value = r
            'Initialisation prochaine cellule de destination
            Set rCell = rCell.Offset(1)
        End If
    Next Cell

End Sub

Re,

Pour info. :

Public Sub Lookup_values()
'Déclaration des variables
Dim lo As ListObject
Dim rCriteria As Range, rData As Range, rCell As Range, Cell As Range, r
    'Initialisation des variables
    '(Toutes les données sont sous forme de tableaux structurés)
    Set lo = Range("T_Résultats").ListObject
    Set rCriteria = Range("T_Critères")
    Set rData = Range("T_Données")

    With lo
        'RAZ tableau T_Résultats
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        'Initialisation cellule de destination
        Set rCell = .InsertRowRange.Cells(1)
    End With

    For Each Cell In rCriteria
        'RechercheV() = Vlookup() en langue US
        r = Application.VLookup(Cell.Value, rData, 2, False)
        If Not IsError(r) Then
            'Cellule de destination dans T_Résultats
            rCell.Value = r
            'Initialisation prochaine cellule de destination
            Set rCell = rCell.Offset(1)
        End If
    Next Cell

End Sub

Bonjour

Un grand merci pour tes commentaires

Je vais revoir le code

Merci encore

Bonne journée

Bonjour,

Un exemple à adapter.

Cdlt.

ExempleRechercheV.xlsm

Bonjour

Je me permets de vous relancer au sujet de cette demande

le fichier fonctionne parfaitement. Mais quand j'essaye de l'appliquer plusieurs fois dans le même classeur Excel (à un autre tableau avec d'autres critères), j'ai le message d'erreur suivant

capture message erreur 1004

J'ai essayé de l'adapter en changeant les noms des colonnnes (en enlevant les "s" à la fin ou en rajoutant des chiffres).

J'ai essayé de mettre le code dans un nouveau module, et je l'ai également collé dans la feuille concernée, et toujours pas de résultat.

Public Sub Lookup_values2()

Dim lo As ListObject

Dim rCriteria As Range, rData As Range, rCell As Range, Cell As Range, r

Dim test

Set lo = Range("T_Résultat").ListObject

Set rCriteria = Range("T_Critère")

Set rData = Range("T_Donnée")

'test = Range(Range("F2"), Range("F2").End(xlDown)).Select

'copie du filtre

'Selection.Copy

'selection du lieu de collage

'Range("M4").Select

'Collage

'ActiveSheet.Paste

With lo

If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete

Set rCell = .InsertRowRange.Cells(1)

End With

For Each Cell In rCriteria

r = Application.VLookup(Cell.Value, rData, 2, False)

If Not IsError(r) Then

rCell.Value = r

Set rCell = rCell.Offset(1)

End If

Next Cell

End Sub

Merci d'avance

Cordialement

Bonjour,

C'est certainement dû à la définition des plages (range) et/ou des noms des tableaux (listobject).

Joins ton classeur anonymisé si nécessaire.

Cdlt.

Bonjour,

C'est certainement dû à la définition des plages (range) et/ou des noms des tableaux (listobject).

Joins ton classeur anonymisé si nécessaire.

Cdlt.

Merci pour ton retour rapide

je te mets en pièce jointe un exemple de code dans module 2 qui est sensé agir sur la feuille 2.

Quand j'exécute le code il me met le même message d'erreur indiqué plus haut.

Je mettrai en ligne le vrai fichier si nécessaire demain matin quand j'aurai accès.

J'ai changé les noms des procédures, celui des variables, et j'ai changé également les noms des colonnes dans la feuille 2.

Merci d'avance

Cordialement

Bonjour,

Il suffisait de renommer les tableaux et l'initialisation des variables dans la procédure VBA.

Je te renvoie le fichier modifié.

Cdlt.

Set lo = Range("T_Résultats2").ListObject
    Set rCriteria = Range("T_Critères2")
    Set rData = Range("T_Données2")

Bonjour,

Il suffisait de renommer les tableaux et l'initialisation des variables dans la procédure VBA.

Je te renvoie le fichier modifié.

Cdlt.

ExempleRechercheV.xlsm

Set lo = Range("T_Résultats2").ListObject
    Set rCriteria = Range("T_Critères2")
    Set rData = Range("T_Données2")

Bonjour Jean-Eric

C'est exactement ce que j'ai fait, j'ai modifié les noms des tableaux et des variables, et j'ai toujours le message d'erreur "1004".

Le fichier que tu m'as envoyé est le même que le tout premier que j'ai recu. Est-ce normal?

Merci d'avance

Bonne journée

Re,

Désolé

Le bon fichier.

Cdlt.

Re,

Désolé

Le bon fichier.

Cdlt.

ExempleRechercheV (1).xlsm

Bonjour

Merci pour ton retour.

Je pense avoir compris l'erreur, quand je clique sur Critères, Colonne1, ou Résultats, j'ai un onglet Création qui apparait.

Et quand je clique sur cet onglet, je vois que les nom de ces tableaux sont différents que ceux indiqués dans les cellules b1, d1 et G1.

Une fois modifié, le code fonctionne très bien

Merci encore une fois

Bonne journée.

Rechercher des sujets similaires à "recherchev"