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