Formule avec INDEX EQUIV

  • Initiateur de la discussion Initiateur de la discussion BChaly
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BChaly

XLDnaute Occasionnel
Bonsoir,

Je souhaite extraire sur une feuille "Résultat" une liste de noms se trouvant sur une feuille "Données",
à condition que ces derniers correspondent à une référence qui se termine par "A", "B", "C".

La formule que j'ai testée en "B2" ne fonctionne que pour la première référence.

Code:
{=IF(ISERROR(INDEX(Données!$C$2:$C$25;MATCH(A2;IF(Données!B2:B25="C-1-B";Données!A2:A25);0)));"";INDEX(Données!$C$2:$C$25;MATCH(A2;IF(Données!B2:B25="C-1-B";Données!A2:A25);0)))}

Merci pour votre aide.

Cordialement

BChaly
 

Pièces jointes

Re : Formule avec INDEX EQUIV

Bonsoir,
je ne comprends pas le critère du tri.
en B2 :
Code:
=SIERREUR(INDEX(Données!C$2:C$25;PETITE.VALEUR(SI(CODE(DROITE(Données!B$2:B$25))<=67;LIGNE(INDIRECT("1:"&LIGNES(Données!B$2:B$25))));LIGNES($2:2)));"")
@ valider par Ctrl+Shift+Enter
@ tirer vers le bas


@ + +
 
Re : Formule avec INDEX EQUIV

Bonjour R@chid,

Merci d'étudier ma question.

En fait je souhaite reporter tous les noms figurant dans le tableau de la feuille "Données" (colonne "C"),
dans la feuille "Résultat" (colonne "B"), si ces noms correspondent à une valeur de la colonne "B" qui se
terminent par A, B, C, dans la feuille "Données".

Merci pour votre aide.

BChaly

Cordialement
 
Re : Formule avec INDEX EQUIV

Bonjour BChaly, R@chid, le forum,

Même en VBA ce n'est pas très facile :

Code:
Function TriFiltre(t, liste$, colref%, coltri%, colrestit%)
Dim i&, n&, a(), b()
t = t 'matrice, plus rapide
For i = 1 To UBound(t)
  If InStr(liste, Right(t(i, colref), 1)) Then
    n = n + 1
    ReDim Preserve a(1 To n): ReDim Preserve b(1 To n)
    a(n) = t(i, coltri)
    b(n) = t(i, colrestit)
  End If
Next
tri a, b, 1, UBound(a)
TriFiltre = b 'vecteur ligne
End Function

Sub tri(a, b, gauc, droi)     ' Quick sort (2 colonnes triées)
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2) & b((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) & b(g) < ref: g = g + 1: Loop
    Do While ref < a(d) & b(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
J'ai aménagé la macro Quick sort pour trier à la fois sur 2 colonnes.

Tirer les formules en A2 et B2 vers le bas jusqu'à rencontrer des valeurs d'erreur, ou utiliser SIERREUR.

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Formule avec INDEX EQUIV

Re,

Sur un grand tableau il sera beaucoup plus rapide d'utiliser une procédure Sub :

Code:
Private Sub Worksheet_Activate()
Dim t, liste$, colref%, coltri%, colrestit%, i&, n&, a()
t = Sheets("Données").[A1].CurrentRegion 'matrice, plus rapide
liste = "ABC"
colref = 2: coltri = 1: colrestit = 3
For i = 1 To UBound(t)
  If InStr(liste, Right(t(i, colref), 1)) Then
    n = n + 1
    ReDim Preserve a(1 To 2, 1 To n)
    a(1, n) = t(i, coltri)
    a(2, n) = t(i, colrestit)
  End If
Next
If n Then
  '---transposition---
  ReDim t(1 To n, 1 To 2)
  For i = 1 To n
    t(i, 1) = a(1, i): t(i, 2) = a(2, i)
  Next
  '---restitution---
  Application.ScreenUpdating = False
  [A2].Resize(n, 2) = t
  [A2].Resize(n, 2).Sort [A2], xlAscending, [B2], , xlAscending, Header:=xlNo
End If
Range("A" & n + 2 & ":B" & Rows.Count).Delete xlUp
End Sub
La macro se déclenche quand on active la feuille "Résultat".

Il est plus simple de trier directement le tableau dans la feuille.

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Formule avec INDEX EQUIV

Bonsoir job75,

Merci, Merci et Merci pour ces trois solutions qui fonctionnent à merveille!!!

Ma demande était compliquée, mais rien n'arrête un magicien comme vous!!!

Le deuxième code est fantastique. Quant à la solution par formule, je vais maintenant m'en inspirer
pour créer des formules en définissant des noms.

Encore une fois Merci pour votre aide.

Cordialement,

BChaly
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour