RechercheV boucle VBA

Joannie -  
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   -
<coBonjour,

Voici mon problème. Mon problème est sur une même feuille mon (affectation = référence). Je fais une rechercheV d'une ''Donnée'' dans la colonne B (envion 100 données) correspondant à une ''référence'' colonne A.

Par contre, parfois mon affectation correspond à une références qui affiche 2 ou 3 fois dans ma colonne A correspondant ainsi à 2 ou 3''données'' de la colonne B, alors je n'obtiens pas toutes les données correspondantes à mon affectation.

Pour récapituler, la colonne affectation contient toujours 1 seule fois la valeur recherchée, mais cette valeur peut correspondre à plusieurs données car la même référence peut s'afficher plusieurs fois dans la colonne dans certains cas.

Mon problème est que la rechercheV va chercher seulement la première valeur qu'elle repère dans la colonne B pour l'expédier dans la colonne désirée soit I.

Comment puis-je obtenir toutes les données correspondant à mon affectation et les reporter dans la colonne I ?

Exemple

Référence 'Données'' ______Affectation _''Données reportée''
274743 | ABBA ___| _______|274743 | ABBA |
387459 | BAAB ___| ______ | _______|CAAC |
274743 | CAAC ___| ______ | 387459 | BAAB |

J'ai obtenu le code ci-dessous sur le net, je ne sais pas si je dois utiliser cela?

Je sais qu'il faut que je créer une boucle avec du code VBA mais je n'ai aucuine idée à quoi peut ressembler ce code.

Merci beaucoup de m'aider, c'est très gentil

Sub options()
Dim Model As String
Dim cells As Range
Dim i
Model = ActiveCell.Value
i = 2
For Each cells In Worksheets('options').Range('A1:A' & Worksheets('options').Range('A65536').End(xlUp).Ro w)
If cells.Value = Model Then
ActiveCell.Offset(0, i) = cells.Offset(0, 1).Value
i = i + 1
End If
Next
End Sub

(à mettre dans un module) devrait fonctionner
tu te places sur la cellules ou tu veux les options et tu lances la macros

2 réponses

pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 769
 
Bonjour,
la formule recherchev a de nombreuses limites. Heureusement Lermite222 a eu le courage de s'y attaquer pour nous tous, pauvres helper excelliens...
Voici le lien ou tu trouveras ton bonheur...
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 140
 
Salut,

Mis à part l'excelente fonction proposée par Lermite 222 que je salut, il est possible d'avoir le résultat par formule matricielle

{=INDEX(B2:B31;PETITE.VALEUR(SI(A2:A31=$D$2;LIGNE(INDIRECT("1:"&LIGNES(A2:A31))));LIGNES($2:2)))}

Pour confirmer une formule matricielle clic en même temps sur(Ctrl+Shift+Entrée)

https://www.cjoint.com/?dElAIw6ujP
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0