Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Recherche V avec multiples résultats

nicomidas

XLDnaute Nouveau
Bonjour,

Je n'arrive pas à trouver une formule qui me liste plusieurs résultats selon plusieurs critères. Avez-vous une piste? Merci!

Les utilisateurs remplissent ce tableau avec un numéro de commande et la formule doit leur dire les numéros de mission (+ le nombre de palette mais ça n'en tenez pas compte) en fonction du type de mission (PCC, DPP...)



Voici le tableau avec les données :



On voit qu'en rouge j'ai 2 PCC pour la même commande, hors j'utilise un SOMME.SI aujourd'hui ce qui m'affiche 27941 au lieu de 13970 + 13971.

N'hésitez pas si vous avez des questions. Merci d'avance pour votre aide!

Cordialement,

Nicolas
 

Pièces jointes

  • Fiche expédition K2 V4.xlsm
    60 KB · Affichages: 9
Dernière édition:

nicomidas

XLDnaute Nouveau
Bonjour,

Pardon je n'ai pas l'habitude de poster... J'ai modifié mon post initial, je n'avais pas vu le bouton pour insérer un fichier. Merci.

Cordialement,
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
En "trichant" en peu, et surtout, en espérant qu'il n'y ait pas plus de 3 lignes possibles par numéro de commande...
J'ai dé-fusionné la cellule devant contenir les données PCC, et mis dans celle de gauche :
Code:
=FILTRE(Tableau_Lancement[NUM DE MISSION];Tableau_Lancement[REF DO]=I$7)
et dans celle de droite :
Code:
=" / "&FILTRE(Tableau_Lancement[NB PRELEVEMENTS];Tableau_Lancement[REF DO]=I$7)

ça pourrait le faire, mais pas plus de 3...
 

Pièces jointes

  • Fiche expédition K2 V4.xlsm
    59.3 KB · Affichages: 7

nicomidas

XLDnaute Nouveau
Merci pour ton retour,

C'est un bon début! Par contre ta formule ne permet pas de différencier les types de missions PCC, DPP et DPS. Il me faut une formule qui tient compte des 3 entêtes de la fiche.

Si pas de mission, alors "/".

N'hésites pas si ma demande n'est pas claire.

Cordialement,

Nicolas
 

job75

XLDnaute Barbatruc
Bonsoir nicomidas, Phil69970, Cousinhub,

Voyez le fichier joint et cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B7]) Is Nothing Then Exit Sub
Dim r As Range, n&, lig&, x$
Application.ScreenUpdating = False
Columns(8).Resize(, Columns.Count - 7).Delete 'RAZ
Range("B3,F3,D7,F7,B10,D10,F10,D23,E23") = "" 'RAZ
With Sheets("Lancement")
    .Columns(4).Replace Target, "#N/A", xlWhole
    On Error Resume Next 'si aucune SpecialCell
    For Each c In .Columns(4).SpecialCells(xlCellTypeConstants, 16)
        n = n + 1
        lig = c.Row
        c= Target
        If n > 1 Then Columns(1).Resize(, 7).Copy Range("A1").Cells(1, 1 + 7 * (n - 1))
        Range("B3").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "L")
        Range("F3").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "I")
        Range("D7").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "E")
        Range("F7").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "H")
        Range("B10").Cells(1, 1 + 7 * (n - 1)) = "/"
        Range("D10").Cells(1, 1 + 7 * (n - 1)) = "/"
        Range("F10").Cells(1, 1 + 7 * (n - 1)) = "/"
        x = .Cells(lig, "F") & " / " & .Cells(lig, "K")
        If .Cells(lig, "G") = "PCC" Then Range("B10").Cells(1, 1 + 7 * (n - 1)) = x
        If .Cells(lig, "G") = "DPP" Then Range("D10").Cells(1, 1 + 7 * (n - 1)) = x
        If .Cells(lig, "G") = "DPS" Then Range("F10").Cells(1, 1 + 7 * (n - 1)) = x
        Range("D23").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "I")
        Range("E23").Cells(1, 1 + 7 * (n - 1)) = .Cells(lig, "J")
    Next
End With
End Sub
Elle se déclenche automatiquement quand on valide ou modifie la cellule B7 (N° commande).

Bonne nuit.
 

Pièces jointes

  • Fiche expédition K2(1).xlsm
    59.8 KB · Affichages: 2

job75

XLDnaute Barbatruc
Bonjour nicomidas, le forum,

Pour décaler les cellules dans la 1ère feuille on peut omettre Cells :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B7]) Is Nothing Then Exit Sub
Dim c As Range, n&, lig&, x$
Application.ScreenUpdating = False
Columns(8).Resize(, Columns.Count - 7).Delete 'RAZ
Range("B3,F3,D7,F7,B10,D10,F10,D23,E23") = "" 'RAZ
With Sheets("Lancement")
    .Columns(4).Replace Target, "#N/A", xlWhole
    On Error Resume Next 'si aucune SpecialCell
    For Each c In .Columns(4).SpecialCells(xlCellTypeConstants, 16)
        n = n + 1
        lig = c.Row
        c = Target
        If n > 1 Then Columns(1).Resize(, 7).Copy Range("A1")(1, 1 + 7 * (n - 1))
        Range("B3")(1, 1 + 7 * (n - 1)) = .Cells(lig, "L")
        Range("F3")(1, 1 + 7 * (n - 1)) = .Cells(lig, "I")
        Range("D7")(1, 1 + 7 * (n - 1)) = .Cells(lig, "E")
        Range("B10")(1, 1 + 7 * (n - 1)) = "/"
        Range("D10")(1, 1 + 7 * (n - 1)) = "/"
        Range("F10")(1, 1 + 7 * (n - 1)) = "/"
        x = .Cells(lig, "F") & " / " & .Cells(lig, "K")
        If .Cells(lig, "G") = "PCC" Then Range("B10")(1, 1 + 7 * (n - 1)) = x
        If .Cells(lig, "G") = "DPP" Then Range("D10")(1, 1 + 7 * (n - 1)) = x
        If .Cells(lig, "G") = "DPS" Then Range("F10")(1, 1 + 7 * (n - 1)) = x
        Range("D23")(1, 1 + 7 * (n - 1)) = .Cells(lig, "I")
        Range("E23")(1, 1 + 7 * (n - 1)) = .Cells(lig, "J")
    Next
End With
End Sub
A cause des cellules fusionnées surtout ne pas utiliser Offset.

A+
 

Pièces jointes

  • Fiche expédition K2(2).xlsm
    59.8 KB · Affichages: 4

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Bonjour Job

Toujours par formules....
Et en conservant les cellules fusionnées!!! (Attention cependant à la hauteur des lignes, ici c'est optimisé pour 3 résultats)
J'ai également modifié :
- Les formules des colonnes N à Q de l'onglet "Lancement" (rajout d'un tri et d'un filtre unique)
- Les validations de données en modifiant la formule (rajout d'un # pour étendre le choix au nombre exact de données issues des formules supra)

La formule dans les cellules fusionnées (ne pas oublier de valider le retour à la ligne automatique) :

Code:
=LET(form;JOINDRE.TEXTE(CAR(10);VRAI;LET(t_cde;Tableau_Lancement[REF DO];t_num;Tableau_Lancement[NUM DE MISSION];t_miss;Tableau_Lancement[TYPE MISSION];t_prelev;Tableau_Lancement[NB PRELEVEMENTS];cde;$B$7;miss;B$9;SI(cde="";"/";SI(FILTRE(t_miss;t_cde=cde)=miss;FILTRE(t_num;t_cde=cde)&" / "&FILTRE(t_prelev;t_cde=cde);""))));SI(form="";"/";form))

Regarde le fichier
Bon W-E
 

Pièces jointes

  • Fiche expédition K2 V4ter.xlsm
    59.2 KB · Affichages: 3

job75

XLDnaute Barbatruc
Bonjour Cousinhub,

Si l'on veut créer la liste de validation en B7 ajouter cette macro dans le code de la 1ère feuille :
VB:
Private Sub Worksheet_Activate()
With Sheets("Liste")
    Sheets("Lancement").Columns(4).Copy .[A1]
    .Columns(1).RemoveDuplicates 1, Header:=xlNo
    [B7.C7].Validation.Delete 'RAZ
    With .[A1].CurrentRegion
        If .Rows.Count > 1 Then
            .Columns(1).TextToColumns .Cells(1) 'commande Convertir
            .Columns(1).Sort .Cells(1), xlAscending, Header:=xlYes 'tri
            [B7:C7].Validation.Add xlValidateList, Formula1:="=" & .Cells(2, 1).Resize(.Rows.Count - 1).Address(External:=True)
        End If
    End With
End With
End Sub
Elle se déclenche quand la feuille est activée.

Edit : j'utilise la commande Convertir ce qui permet de trier la liste.

A+
 

Pièces jointes

  • Fiche expédition K2(3).xlsm
    63.5 KB · Affichages: 4
Dernière édition:

nicomidas

XLDnaute Nouveau
Bonjour,

Étant moins à l'aise sur le VBA et dans un souci de vouloir continuer à optimiser le fichier dans les prochaines années, je vais choisir la solution de @Cousinhub.

Un grand merci tout de même pour ces codes, je garde le fichier vers moi pour d'autres solutions.

Cordialement,

Nicolas
 

nicomidas

XLDnaute Nouveau
Bonjour,

C'est top! Cela répond parfaitement à ma demande! C'est génial.
Merci d'avoir utiliser des formules, cela me permettra de continuer à maintenir le fichier à jour si besoin.

Ce forum est génial, merci les gars pour votre aide!

Excellent week-end à vous,

Nicolas
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…