XL 2010 Index/Equiv multi critère

Pianiste75

XLDnaute Nouveau
Bonjour à tous,

Tout d'abord merci pour l'espace.

Alors voici mon problème, je suis à la recherche d'une formule pouvant de remonter une information précise.

Dans ma table "Stage 1_Overview", je cherche à
  • Trouver les informations "Work Order"
    • à partir du nom d'un fournisseur (D5)
    • Une fois les résultats obtenu, intégrer une deuxième condition : l'année. En suivant la logique si D6<>"", prendre les données de l'année en question Si D6="", prendre toutes les données sans distinctions.
  • Les données "Work Order" ne doivent apparaitre SSI le numéro obtenu dans la colonne FA commence par "5000"
==> Pour information les données se situent dans l'onglet SES.

J'ai tout d'abord essayer avec une classique Index/Equiv mais le fait d'avoir des doublons rend la chose, pour moi, impossible. Je me suis rabattu vers une combinaison Index/Petite.valeur/Si/Nb.si et pour l'avoir utilisé dans une autre table, je pense qu'elle peut me permettre d'avoir le résultat que je veux. Le problème est que je n'arrive pas dans ma table à créer cette formule. Je n'arrive pas non plus à intégrer la deuxième condition "L'année"


Désolé si cela semble relativement confus. J'avoue me heurter à ce problème depuis un mois et je n'en vois pas le bout.

Merci d'avance à tous ceux qui prendront la peine de m'aider.
Bonne soirée

PS : j'ai fouillé un peu partout sur le forum sans résultats probants.
 

Pièces jointes

  • Tableau Exercice.xlsx
    17 KB · Affichages: 15

Jocelyn

XLDnaute Barbatruc
Bonjour le Forum,
Bonjour Pianiste75, Chris :),

L'idéal serait une macro mais je ne sais pas faire alors une solution par formule matricielle qui risque de ramée pas mal

Cordialement

Bises Chris:)
 

Pièces jointes

  • Tableau Exercice.xlsx
    16.8 KB · Affichages: 21

Pianiste75

XLDnaute Nouveau
Bonjour à toi Jocelyn,

Je pense pouvoir m'accomoder des lenteurs potentielles de la formule, le résultat semble être conforme à ce que j'attendais. Je la mets en place dans la journée, et je reviens vers toi.

Une nouvelle fois, un immense merci à toi.

Si une personne à la capacité de faire ce que préconnise Jocelyn, je reste à l'écoute.

Merci d'avance et bonne journée
 

Pianiste75

XLDnaute Nouveau
Jocelyn,

Après avoir testé la formule tout seul fonctionner sans problèmes. J'ai cependant une dernière demande. Il faudrait une dernière condition qui vérifie que les pièces FA (Correspondance en Colonne C, onglet SES) des éléments WO remontés commencent par « 5000 ».

Les WO ne correspondant pas à ce critère ne m’intéressent pas.

J'ai fait quelques tentatives mais je ne trouve pas de moyen de l'intégrer. Je pense que c'est faisable mais n'hésites pas à me dire que non. Dans tous les cas, merci pour ton aide.
 

Pièces jointes

  • Tableau Exercice.xlsx
    17.1 KB · Affichages: 14

Jocelyn

XLDnaute Barbatruc
re,
Bonjour job75,

oui pas cool les colonnes entières j'ai juste repris la formule de base sans aller plus loin par contre le :

SI($D$6="";((SES!B:B<>"")+(SES!B:B=""));SES!B:B=D6) c'est juste que vu les exemple il n'y avait rien en colonne B et que donc ici si D6="" on remonte les infos que la colonne B n'ai pas de date ou quelle est n'importe quelle date si la base est bien rempli cette partie est simplifiée evidement

Cordialement
 

job75

XLDnaute Barbatruc
Re,

Avec le tableau source défini dynamiquement par le nom T les choses vont mieux.

Les formules matricielles en D12 et E12 me paraissent faire l'affaire, voyez le fichier joint.

A+
 

Pièces jointes

  • Tableau Exercice(1).xlsx
    22.4 KB · Affichages: 15

Jocelyn

XLDnaute Barbatruc
re,

Revoila le fichier avec le complément de demande et comme le souligne job 75 limiter les plage est plutôt une bonne solution pour cela on peut créer des plage nommée la je n'ai pas trop le temps mais si tu es interessé je pourrais de faire un exemple

Cordialement
 

Pièces jointes

  • Tableau Exercice V1.xlsx
    17.1 KB · Affichages: 13

job75

XLDnaute Barbatruc
Re,

Solution VBA avec cette macro à placer dans le code de la 1ère feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D5:D6]) Is Nothing Then Exit Sub
Dim nom$, annee%, t, d As Object, i&, x$, n&, a, resu()
nom = [D5]: annee = [D6]
t = Sheets("SES").[A1].CurrentRegion.Resize(, 5)
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
    If t(i, 1) = nom And (t(i, 2) = annee Or IsEmpty(annee)) And Left(t(i, 3), 4) = "5000" Then
        x = t(i, 3) & Chr(1) & t(i, 5)
        If Not d.exists(x) Then d(x) = i 'mémorise la ligne
    End If
Next
n = d.Count
'---transposition---
If n Then
    a = d.items
    ReDim resu(UBound(a), 1) 'base 0, nombre de colonnes à adapter
    For i = 0 To UBound(a)
        resu(i, 0) = t(a(i), 3)
        resu(i, 1) = t(a(i), 5)
    Next
End If
'---restitution et mises en formes---
With [D12] '1ère cellule à adapter
    If n Then
        .Resize(n, 2) = resu
        .Resize(n, 2).Interior.ColorIndex = 6 'jaune
        .Resize(n, 2).Borders.Weight = xlHairline 'bordures
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 2).Delete xlUp 'RAZ sous le tableau
End With
With UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Fichier .xlsm joint.

A+
 

Pièces jointes

  • Tableau Exercice VBA(1).xlsm
    31.9 KB · Affichages: 16

Pianiste75

XLDnaute Nouveau
Alors là je m'incline, quel plaisir de trouver une communauté aussi réactive. Merci infiniment pour toutes ces informations et solutions. Je constate que je n'étais pas si loin du but.

La solution fonctionne totalement, je garde cependant le post ouvert car je souhaite tester la solution VBA. La lecture est pour moi assez difficile mais je vais prendre le temps de tout comprendre.

Je ne connaissais pas non plus ces plages dynamiques, si tu as le temps de me montrer ce serait avec plaisir, si non je vais me trouver un tuto par là.

Dans tous les cas, je vais essayer d'être actif sur le forum et voir si je peux aider, modestement, certaines personnes.

Bonne soirée à tous et encore une fois, merci.
 

Statistiques des forums

Discussions
312 024
Messages
2 084 724
Membres
102 640
dernier inscrit
Alml