EXCEL: RecherchV et renvoie de plusieur valeur

Fermé
DiiDii - 3 déc. 2014 à 13:27
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 - 3 déc. 2014 à 21:56
Bonjour,


J'ai un tableau (TABLEAU1) qui ressemble a ceci:
1 a A
2 a A
2 b B
3 d A
4 c A
5 b A
5 c B
5 d C
6 a A

J'ai un tableau (TABLEAU2) avec ceci:
1
2
3
4
5
6

J'aimerai créer une formule en colonne 2 du tableau TABLEAU2 pour qui me permetrais d'afficher ceci:
1 A
2 A B
3 A
4 A
5 A B C
6 A

J'ai essayé avec EQUIV et INDEX en formule matricielle mais cela n'a pas foncitonné.
J'ai aussi essayé avec des recherchV mais sans succes.

Merci par avance de votre aide
DiiDii
A voir également:

1 réponse

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
3 déc. 2014 à 21:56
Bonsoir

1° Nommer la plage de la 1ere colonne du 1er tableau codes et nommer la plage de la 3eme colonne du même tableau valeurs

2° En supposant le 2eme tableau commençant par exemple en E2 (le nombre 1 est en E2), en F2 mettre la formule suivante :
=SI(COLONNES($F:F)<=NB.SI(codes;$E2);INDEX(valeurs;PETITE.VALEUR(SI(codes=$E2;LIGNE(INDIRECT("1:"&LIGNES(codes))));COLONNES($F:F)));"")
Formule matricielle à valider par CTRL + MAJ +ENTREE (elle se met alors automatiquement entre [ ] )

Etirer la formule vers la droite et vers le bas

Si par contre tu veux tous les résultats dans la même cellule il faut passer par une fonction personnalisée telle celle donnée par Jacques Boisgontier :

ALT + F11 pour ouvrie Editeur VBA
Insertion puis Module
Copier coller le code suivant dans la page

Function Tous(v, champRech As Range, ChampRetour As Range)
  a = champRech
  temp = ""
  For i = 1 To champRech.Count
    If a(i, 1) = v Then
        temp = temp & ChampRetour(i) & " "
    End If
  Next i
  Tous = Left(temp, Len(temp) - 1)
End Function


Fermer l'éditeur

La fonction est maintenant accessible dans n'importe quelle cellule comme toute focntion Excell avec la syntaxe = Tous(code recherché,plage de recherche, plage des valeurs à renvoyer)
Donc en ayant nommé les plages du 1er tableau comme précédemment, en F2 du 2eme tableau la formule sera = Tous(E2;codes;valeurs)
A étirer au bas de la colonne

Cdlmnt
0