XL 2021 Regroupement de ligne en fonction d'une valeur identique

leoooooooooooooooooo

XLDnaute Nouveau
Bonjour, je souhaiterais pouvoir regrouper plusieurs ligne qui ont la même référence, pour être plus clair voici ce que j'ai actuellement :

1706689936198.png

Dans la capture ci-dessus, le système de récurrence fonctionne correctement. Cependant, le seul problème réside dans le fait que ce tableau doit servir à générer des commandes. Cela implique que la référence du produit ne doit apparaître qu'une seule fois, comme illustré dans ce cas précis :

1706690010492.png


À noter que le prix unitaire peut varier pour la même référence. Dans de tels cas, il serait préférable de sélectionner le prix le plus élevé.

Le cas ne s'est toujours pas présenté, mais il faudrait également prendre en compte la possibilité d'avoir deux machines pour une même référence. Si c'est réalisable, il devrait noter les deux. Dans le cas où cela n'est pas possible, il faudrait afficher le texte "Machine Multiple"

Ci joint le fichier excel.

Merci d'avance,
Cordialement Leo
 

Pièces jointes

  • document archive public.xlsx
    43.6 KB · Affichages: 7
Solution
Alors, la requête fait un regroupement par désignation/ref + machine/id_machine
On peut aussi compter en ne regroupant que par désignation/réf quelque soit la machine et lister les machines utilisant chaque désignation.
Est-ce que c'est cà?
P.

p56

XLDnaute Occasionnel
Bonjour Léo,
Si j'ai bien compris le besoin, avec du Sql c'est assez simple, on peut résumer avec une fonction simple :
VB:
Function T_Tdb(deb As Double, fin As Double) As Variant

    Req = "SELECT `Désignation`, `Référence`, `machine`, `Identification machine`, " & _
          " COUNT(`Désignation`) AS `Nb`, MAX(`prix unité`) as `prix_unité`" & _
          " FROM " & Bddo & _
          " WHERE `Date de demande` BETWEEN " & deb & " AND " & fin & _
          " GROUP BY `Désignation`, `Référence`, `machine`, `Identification machine`" & _
          " ORDER BY `Désignation`"
   
    Connect_xls ThisWorkbook.FullName
    T_Tdb = Select_Db
    Close_Cnx
End Function
Démo_tdbj.gif

Est-ce que c'est ça? (les récurrences c'est bien le nb de réf qu'on retrouve plus d'une fois sur la période?)
P.
Ps je me suis permis de corriger l'orthographe de "Désignation"
 
Dernière édition:

leoooooooooooooooooo

XLDnaute Nouveau
Bonjour p56,

Je ne comprends pas bien le fonctionnement du programme. Même en modifiant le nombre de récurrences, il affiche toujours le même nombre de lignes.

Je vais tenter d'être plus clair. Le terme "nombre de récurrence" fait référence au nombre de fois qu'un produit a été commandé (même référence). Ce que je souhaite, c'est que le programme renvoie la ligne uniquement si le nombre de fois où le produit a été commandé est supérieur ou égal au nombre de récurrences spécifié.

Ps: Merci pour la correction

Cordialement Léo
 

p56

XLDnaute Occasionnel
Bonjour Léo,
Il me semblait bien que je n'avais pas compris la case "récurrence".
Alors pour limiter la recherche pour cette condition, il suffit d'ajouter une clause HAVING :
VB:
" HAVING COUNT(`Désignation`) >=" & rec
Voici le fichier modifié avec cet ajout
p.
 
Dernière édition:

leoooooooooooooooooo

XLDnaute Nouveau
Bonjour Léo,
Il me semblait bien que je n'avais pas compris la case "récurrence".
Alors pour limiter la recherche pour cette condition, il suffit d'ajouter une clause HAVING :
VB:
" HAVING COUNT(`Désignation`) >=" & rec
Voici le fichier modifié avec cet ajout
p.

Edit : on peut aussi écrire la requête comme ceci, mais il me semble que ça donne le même résultat :
VB:
    Req = "SELECT `Désignation`, `Référence`, `machine`, `Identification machine`, " & _
          " COUNT(`Référence`) AS `nb Rec`, MAX(`prix unité`) as `prix_unité`" & _
          " FROM " & Bddo & _
          " WHERE `Date de demande` BETWEEN " & deb & " AND " & fin & _
          " GROUP BY `Désignation`, `Référence`, `machine`, `Identification machine`" & _
          " HAVING COUNT(`Référence`) >=" & rec & _
          " ORDER BY `Désignation`"
Je pense qu'il y à un problème car avec 12 mois et une récurrence de 3 on est aussi sensé avoir un lot de 10 lamelle qui s'affiche
1707381604697.png
 

p56

XLDnaute Occasionnel
Alors, la requête fait un regroupement par désignation/ref + machine/id_machine
On peut aussi compter en ne regroupant que par désignation/réf quelque soit la machine et lister les machines utilisant chaque désignation.
Est-ce que c'est cà?
P.
 

Pièces jointes

  • document archive public_Sql_8fev2024.xlsm
    63.5 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 318
Membres
103 176
dernier inscrit
jean.yvesjean.yves