Effectuer une RECHERCHE V avec plusieurs résultats

Bonjour,

Je suis débutant en VBA. Après de multiples recherche sur les forums j'ai réussi à trouver des début de code qui pourrait m'aider mais rien à y faire je n'arrive pas à l'adapter.

J'aimerais faire une simple recherche v de la colonne Emplacement de la feuille "Liste 645" dans ma feuille "2022" dans la colonne emplacement.

Pas de soucis avec ça côté vba. En revanche il arrive que j'ai plusieurs emplacement à afficher en même temps. C'est pour arriver à çà que j'ai essayé d'adapter le code suivant :

<pre>ction rmult(valcherch As Variant, x As Range, colonne As Long) As Variant
Dim u As Variant
Dim nb As Long
Dim boucle As Long

For boucle = 1 To x.Rows.Count

    If x(boucle, 1) = valcherch Then
        u = u & x(boucle, colonne) & "~"
        nb = nb + 1
    End If

Next boucle

rmult = u

End Function</pre>

Quand je l'exécute, rien ne se passe.

Avez-vous des idées ?

Merci d'avance :)

Bonjour,

Si ça marche, mais peut-être que vous vous êtes trompé sur le N° de la colonne, exemple: si la plage de cellule (x) est: B1:D10, et que la colonne à rapatrier est la colonne D, (la 4ème colonne de la feuille), il vous faut mettre colonne 3 (la 3ème colonne de la plage sélectionnée).

Si ce n'est pas ça, un petit bout de fichier joint, aiderait grandement.

Cdlt

Bonjour,

Okay merci mais je ne vois pas comment je peux modifier la plage dans laquelle ont cherche les infos mais aussi les cellules où nous trouverons le résultat.

Ci-joint mon fichier pour exemple.

Mais où avez-vous écrit cette fonction personnalisée et dans quelle cellule vous l'appliquez?

Ne confondez-vous pas fonction personnalisée et macro?

Bon en essayant de déchiffrer, voici ce que ça donne:

formule en Q2:

=rmult($C3;'Liste 645'!$M$2:$N8;1)

le code

Function rmult(valcherch As Variant, x As Range, colonne As Long) As Variant
    Dim u As Variant
    Dim nb As Long
    Dim boucle As Long
    For boucle = 2 To x.Rows.Count
        If CDbl(x(boucle, 2)) = valcherch Then
            u = u & x(boucle, colonne) & Chr(10)
            nb = nb + 1
        End If
    Next boucle
    rmult = u
End Function

le fichier

Cdlt

Wow ... Vous avez tout à fait raison. Je ne pensais pas qu'il était possible de faire ça ^^ Incroyable !!

C'est vraiment incroyable mais je m'aperçois mtn que ce n'est pas exactement ce dont j'ai besoin.

J'aimerais avoir exactement le même résultat mais intégrer çà à la macro qui me sert à remplir plusieurs autres colonnes.

Voici le code que je place dans ma Worksheet 2022 et que me remplis les colonnes M, N et P.

Sub Correctionsdestock2()

Dim plgtypedemuvemet As Range
Dim plgnumerodarticle As Range
Dim plgsomme As Range
Dim ligne As Integer
Dim colonne As Integer
Dim max As Integer
Dim nbcells As Integer

'Affectation la plage de cellules

Set plgtypedemouvemet = Worksheets("Liste 645").Range("D2:D57396")
Set plgnumrodarticle = Worksheets("Liste 645").Range("F2:F57396")
Set plgsomme = Worksheets("Liste 645").Range("I2:I57396")

max = Range("B3").End(xlDown).Row
nbcells = Application.CountA(Range("B3:B" & max)) + 2

'Début de la boucle

For ligne = 3 To nbcells

If Cells(ligne, 14).Value = "" Then
'Utilisation des plages dans la formule

Cells(ligne, 14) = -1 * Application.WorksheetFunction.SumIfs(Worksheets("Liste 645").Range("I2:I100"), Worksheets("Liste 645").Range("F2:F100"), Cells(ligne, 9).Value, Worksheets("Liste 645").Range("D2:D100"), "AK") + Application.WorksheetFunction.SumIfs(Worksheets("Liste 645").Range("I2:I100"), Worksheets("Liste 645").Range("F2:F100"), Cells(ligne, 9).Value, Worksheets("Liste 645").Range("D2:D100"), "EK")
Cells(ligne, 13) = Application.WorksheetFunction.SumIfs(Worksheets("Liste 645").Range("I2:I57396"), Worksheets("Liste 645").Range("A2:A57396"), Cells(ligne, 1).Value, Worksheets("Liste 645").Range("D2:D57396"), "AP")
Cells(ligne, 16) = Application.VLookup(Cells(ligne, 1).Value, Worksheets("Liste 645").Range("A2:Y100"), 25, False)

'Libération des objets range

End If
Set plgnumerodarticle = Nothing

Set plgtypedemouvemet = Nothing

Next ligne

End Sub

Encore merci pour ton aide Arturo83 :)

Plutôt que de me donner votre code, il serait plus simple que vous décriviez ce qu'il faut mettre dans les colonnes M, N et P.

Vous faites référence aux colonnes AK, EK, AP dans les fonctions, je ne vois rien dans ces colonnes

Rechercher des sujets similaires à "effectuer recherche resultats"