[RESOLU] - Extraction de données

Roni95

XLDnaute Occasionnel
Bonjour le forum,

j'ai un fichier Excel avec les données suivantes:
- produit
- lot
- description
- date péremption du lot
- statut du lot
- qtés
- prévisions

Mon but est d'extraire uniquement les produits qui ont une péremption entre 9 et 12 mois à partir du jour où j'effectue cette extraction et pour lesquels il n'y a pas d'autres lots au-delà de 12 mois.

Je n'ai mis qu'un échantillon des données donc j'espère que cela suffira et surtout que ma demande est assez claire.

Merci par avance pour votre aide.
 

Pièces jointes

  • test.xlsx
    11 KB · Affichages: 55
  • test.xlsx
    11 KB · Affichages: 63
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Extraction de données

Bonjour Roni95, CPk,

pas sûr d'avoir tout compris.

un essai où les lignes d'un produit sont extraites si l'ensemble des lots de ce produit a une date de péremption comprise entre 9 et 12 mois ? (même si aucun produit à extraire dans l'exemple fourni?)


Code:
Sub Extract_9_12()
 Dim FS As Worksheet, FC As Worksheet
 Dim DerL As Long, Nmois As Byte, i As Long, j As Long, x As Long, k As Byte
 Dim Dico, Clé, Tablo, TabFin()

 Set Dico = CreateObject("Scripting.Dictionary")
 Set FS = Worksheets("test") 'Feuille Source. à adapter
 Set FC = Worksheets("Feuil1") 'Feuille Cible. à adapter

 DerL = FS.Range("A" & Rows.Count).End(xlUp).Row
 FS.Range("E2:E" & DerL).NumberFormat = "General" ' format standard pour éviter les transformations en date US
 Tablo = FS.Range("A2:H" & DerL)

 For i = LBound(Tablo) To UBound(Tablo)
    If Not Dico.exists(Tablo(i, 6)) Or Dico(Tablo(i, 6)) = True Then
        Nmois = Int((Tablo(i, 5) - Date) / 30)
        If Nmois < 9 Or Nmois > 12 Then
            Dico(Tablo(i, 6)) = False
        Else
            Dico(Tablo(i, 6)) = True
        End If
    End If
 Next
 For Each Clé In Dico.keys
    If Dico(Clé) = False Then Dico.Remove (Clé)
 Next
 If Dico.Count > 0 Then
    For Each Clé In Dico.keys
        For j = LBound(Tablo) To UBound(Tablo)
            If Tablo(j, 6) = Clé Then
                x = x + 1
                ReDim Preserve TabFin(1 To 8, 1 To x)
                For k = 1 To 8
                    TabFin(k, x) = Tablo(j, k)
                Next
            End If
        Next
    Next

    FC.Range("A1").Resize(UBound(TabFin, 2), UBound(TabFin, 1)) = Application.Transpose(TabFin)
    FC.Columns("E:E").NumberFormat = "m/d/yyyy" ' mise au format date
    FS.Range("E2:E" & DerL).NumberFormat = "m/d/yyyy" ' remise au format date
 Else
    MsgBox "Aucun produit à date de péremption dans les 9 à 12 prochains mois"
 End If
End Sub

A+
 

CPk

XLDnaute Impliqué
Re : Extraction de données

Pour ma part , pour l'echantillon donné dans le fichier je ne trouve aucun produit à signaler. Je n'ai pas pris comme référence les N° de lot pour determiner s'il y en a un en de ça de 12 mois car ils sont tous différents donc j'ai pris les noms des produits pour tester.

Code:
=SI(ET(E2-AUJOURDHUI()<=365;(E2-AUJOURDHUI())>=270);SI((INDEX($E:$E;GRANDE.VALEUR(SI($F$2:$F$44=F2;LIGNE($F$2:$F$44));1))-AUJOURDHUI())>365;"";"Oui");"")

C'est une formule matricielle
 

Roni95

XLDnaute Occasionnel
Re : Extraction de données

Bonjour CPk et Paf

Désolé pour ma réponse tardive.
Je vous remercie pour votre aide.
j'ai testé la formule matricielle et ça marche très bien, cela m'indique bien quels sont mes lots avec une péremption entre 9 et 12 mois - Merci CPk

Maintenant, serait-il possible de savoir pour ces produits entre 9 et 12 mois s'il existe des lots avec une péremption au-delà de 12 mois?

Merci encore pour votre aide
 

Roni95

XLDnaute Occasionnel
Re : Extraction de données

Bonjour CPk,

Je n'ai pas l'impression que cela le prenne en compte car la formule m'affiche un "OUI" qu'il y ait ou non des lots supérieurs à 12 mois pour le même produit. Ci-joint mon fichier

Par exemple, pour mon produit "POMMES", il n'y a qu'un seul lot et il est entre 9 & 12 mois donc cela affiche OUI
par contre pour mon produit "FRAMBOISES", cela m'affiche "OUI" pour 2 lots qui sont entre 9 & 12 mais j'ai d'autres lots pour ce produit qui sont avec une péremption plus lointaine.

Il faudrait donc arriver à extraire 2 données je pense
- une liste produits par lots entre 9 & 12 mois mais qui n'ont aucun lot plus lointain
- une liste produits par lots entre 9 & 12 mois mais qui ont un lot plus lointain

Ou alors trouver avec une formule un affichage spécifique du type
- "vide" si pas de lots entre 9 & 12 mois
- "OUI" si lot entre 9 & 12 mois et pas d'autres lots de + 12 mois
- "PLUS" si lot entre 9 & 12 mois et d'autres lots de + 12 mois

Est ce faisable?
Merci CPk
 

Pièces jointes

  • test (1).xlsx
    13.6 KB · Affichages: 51
  • test (1).xlsx
    13.6 KB · Affichages: 43
Dernière édition:

Celeda

XLDnaute Barbatruc
Re : Extraction de données

Bonjour,

Peut-être avec l'aide d'un tcd en ayant auparavant insérer des formules dans la bd et en faisant des groupes de mois dans le tcd, avec la fonction grouper : on afficherait alors toutes les possibilités , ente 6-7 mois, 9-12, et au-delà.
 

Pièces jointes

  • tcd-fruits.xlsx
    25.6 KB · Affichages: 52

CPk

XLDnaute Impliqué
Re : Extraction de données

Bonjour Roni Celeda.

-J'ai probablement omis de préciser que la colonne date de péremption doit-être triée par ordre croissant-

Cependant ,Les deux framboises sont logiquement signalées car elles ont une date entre 9 et 12 mois et qu'elles n'ont pas d'autres lots supérieurs à 12 mois. Voir l'image "Sans-titre" et pour imager mes propos voir "Sans-Titre2" où j'ai collé le même n° de lot sur une framboise avec une date au dela d'un an et le oui disparaît....

Il y a donc une incompréhension quelque part...
 

Pièces jointes

  • Sans titre.jpg
    Sans titre.jpg
    39.9 KB · Affichages: 44
  • Sans titre 2.jpg
    Sans titre 2.jpg
    85.2 KB · Affichages: 44
  • Sans titre.jpg
    Sans titre.jpg
    39.9 KB · Affichages: 45
  • Sans titre 2.jpg
    Sans titre 2.jpg
    85.2 KB · Affichages: 49

Roni95

XLDnaute Occasionnel
Re : Extraction de données

Bonjour,

Peut-être avec l'aide d'un tcd en ayant auparavant insérer des formules dans la bd et en faisant des groupes de mois dans le tcd, avec la fonction grouper : on afficherait alors toutes les possibilités , ente 6-7 mois, 9-12, et au-delà.

Bonjour Celeda et merci pour cette solution

Je pense que cela peut être très utile lorsque l'on a peu de références mais dans mon cas, j'en ai + de 700 :(

Merci pour ton aide
 

Roni95

XLDnaute Occasionnel
Re : Extraction de données

Bonjour Roni Celeda.

-J'ai probablement omis de préciser que la colonne date de péremption doit-être triée par ordre croissant-

Cependant ,Les deux framboises sont logiquement signalées car elles ont une date entre 9 et 12 mois et qu'elles n'ont pas d'autres lots supérieurs à 12 mois. Voir l'image "Sans-titre" et pour imager mes propos voir "Sans-Titre2" où j'ai collé le même n° de lot sur une framboise avec une date au dela d'un an et le oui disparaît....

Il y a donc une incompréhension quelque part...

Bonjour CPk,

Oui je suis d'accord sauf que pour Framboises il existe aussi d'autres lots avec une péremption à + 12 mois et c'est aussi cela que je voudrais avoir comme info (là avec si peu de références on s'en aperçoit mais avec 700 c'est plus difficile :()
Du coup, la formule met "OUI" s'il n'y a pas d'autres lots mais elle met aussi "OUI" s'il y en d'autres au delà de 12 mois..
 

Discussions similaires

Réponses
10
Affichages
794

Statistiques des forums

Discussions
312 327
Messages
2 087 314
Membres
103 515
dernier inscrit
Cherbil12345