EXCEL: RecherchV et renvoie de plusieur valeur
DiiDii
-
via55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14730 Date d'inscription Statut Membre Dernière intervention -
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
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:
- EXCEL: RecherchV et renvoie de plusieur valeur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
1 réponse
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
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
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