XL 2016 Dates péremption de produits

XVA

XLDnaute Junior
Bonjour,

Je gère depuis peu un magasin aves des produits alimentaires. Je suis livré 2 fois par semaines de ces produits. Chaque produit possède une durée de vie au-delà de laquelle je ne peux plus les vendre.
Je souhaite réaliser un tableau tel que :
Tableau = 1 date de référence = la date de livraison
Chaque produit = date de péremption + quantité du produit
Indiquer nombre de jour(s) avant péremption
Si 5 jours (ou moins) avant péremption = Copie du nom du produit dans un tableau d'alarme

J'espère être assez clair dans mon explication !

Suis preneur de toute idée ou solution !!

En vous remerciant,

XVA
 

XVA

XLDnaute Junior
Bonjour
Théoriquement on est là pour t'aider pas pour faire le boulot...
Ci joint ma proposition...
A+ François
Bonjour François,

Tu as raison sur le principe de l'aide et non de l'exécution en lieu et place. Ci-joint un fichier que j'avais déjà réalisé. Je n'arrive pas à transférer les produits "- 5 jours" de la péremption dans un autre tableau.
Tu l'as réalisé dans ton exemple mais je ne comprends pas comment tu le fais …

Merci en tout cas pour ton aide !!

XVA
 

Pièces jointes

  • Dates péremption.xlsx
    24 KB · Affichages: 17

XVA

XLDnaute Junior
C'est une macro qui s'ouvre à l'ouverture du fichier.
Avant de modifier ton fichier:
tu crées une feuille par jour de livraison ou tu modifies la feuille 24 juillet?
Y aura t'il plusieurs feuille à analyser?
A+ François
Ok pour la macro, compris. Je crée un onglet par jour de livraison dans le même fichier Excel. L’idéal est d’analyser plusieurs feuilles de livraison vers un onglet n’affichant que les « - 5 jours avant péremption » mais compliqué car les quantités de chaque produit (ligne) sont à prendre en compte...
XVA
 

XVA

XLDnaute Junior
Analyse toutes les feuilles existantes au démarrage et recopie les données périmées dans moins de 5 jours dans la feuille "périmé"
A+ François
Trop fort ! Cela me parle car tu utilises le fichier que j'ai créé il y a quelques jours.
Je teste cela ce soir mais ça ressemble vraiment à ce dont j'ai besoin.
Je te tiens informé très vite, je ferme le magasin dimanche et serai en vacances semaine prochaine pour travailler un peu dessus !

Merci beaucoup !!

XVA
 

XVA

XLDnaute Junior
Bonjour Fanfan !

J'ai regardé ce matin la dernière version d'hier. Cela correspond vraiment, merci !

Juste un point que je n'arrive pas à étendre, c'est le passage d'un produit de moins de 5 jours avant péremption dans l'onglet "Périmé". Peux-tu m'en dire plus afin que je puisse l'écrire pour tous les produits qui se trouvent dans ce cas ?

En te remerciant à nouveau

XVA
 

fanfan38

XLDnaute Barbatruc
Bonjour,
Comme je te l'ai dit, c'est une macro qui se lance au démarrage du fichier
elle est dans thisworkbook (alt+f11)

VB:
Private Sub Workbook_Open()
 On Error GoTo msgerror 'en cas d'erreur
'déclaration des variables
 Dim dl As Long, lig As Long, i As Long, sh As Integer, x As Byte
 lig = Sheets("Périmé").Range("A" & Rows.Count).End(xlUp).Row + 1
'efface les données de la feuille perimé
 Sheets("Périmé").Range("A2:G" & lig).ClearContents
'boucle sur toutes les feuilles
 For sh = 1 To Sheets.Count
  If Sheets(sh).Name <> "Liste" And Sheets(sh).Name <> "Périmé" Then
'dernière ligne de la feuille en cours de traitement
   dl = Sheets(sh).Range("A" & Rows.Count).End(xlUp).Row 
   For i = 6 To dl ' boucle toutes les lignes de la feuille en cours
    If Len(Sheets(sh).Range("D" & i).Value) > 0 Then 'si pas de date
    If IsDate(Sheets(sh).Range("D" & i).Value) Then
    If Sheets(sh).Range("D" & i).Value - Now < 6 Then 'contrôle si moins de 6 j
   'dernière ligne +1 de la feuille périmé
     lig = Sheets("Périmé").Range("A" & Rows.Count).End(xlUp).Row + 1
     For x = 1 To 6 'boucle sur les colonnes
      Sheets("Périmé").Cells(lig, x).Value = Sheets(sh).Cells(i, x).Value
     Next x
'ajoute une formule dans la colonne H pour avoir le nb de jours
     Sheets("Périmé").Cells(lig, 7).Formula = "=RC[-3]-TODAY()"
    End If
    End If
    End If
   Next i
  End If
 Next sh
 Exit Sub
msgerror:
 MsgBox ("Erreur ligne" & Erl())
End Sub

A+ François
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG