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...)

1695970206803.png


Voici le tableau avec les données :

1695970262228.png


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 @nicomidas

Perso :
1) Je ne m'inscris pas sur un site inconnu pour aller chercher un fichier
==> Voir la charte § 2.5
2) Les images ne sont pas exploitable sur excel exemple :

Regarde la pièce jointe 1179951
Est ce que tu peux récupérer la réponse ?
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
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...
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.
1696000504776.png

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 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+
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,
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
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

Statistiques des forums

Discussions
315 107
Messages
2 116 272
Membres
112 709
dernier inscrit
Vince_le_kinoi