RechercheV boucle VBA

Fermé
Joannie - Modifié par Joannie le 30/03/2010 à 04:47
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 30 mars 2010 à 11:35
<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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
30 mars 2010 à 08:16
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 30/03/2010 à 11:39
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