XL 2021 Inventaire automatique

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour,
J'ai un grand jardin très productif. Donc, je congèle par lots de plusieurs unités (ex : Epinards nature 2 personnes). J'ai saisi deux lignes mais j'aurai préféré indiquer une seule ligne avec une "Q" = 2 et pouvoir retirer 1 sac sans que cela m'indique une "erreur" (Cellule en rouge) comme on peut le voir dans la référence Boulangerie/Pain/Chia.
De fait, cette erreur est logique : J'ai 5 Chia en stock, j'en enlève 4 donc le stock résiduel (QR) tombe à 1 et la cellule"QS" se met en rouge puisque "QS" devient supérieur à "QR" nouvellement calculé...
Mon souhait, si c'est possible...
- Je congèle 10 sacs de haricots verts (Q = 10 et QR =10)
- j'ai besoin de retirer 2 sacs (QS=2)
Je voudrai, si c'est possible actualiser QR (=Q-QS), réinitialiser QS (="") pour pouvoir ensuite sortir à nouveau de ce stock (=8) d'autres sacs jusqu'à ce que QS = 0 pour afficher dans la colonne ETAT "Sortie".

Bien sûr, le modèle présenté dans le fichier n'est qu'une ébauche.
Je me suis trituré le peu de neurones fonctionnels qui me restent sans trouver une solution à ce petit problème...

Si vous avez une solution, une piste ou une idée, je suis preneur,
Portez-vous bien,
Pierre
 

Pièces jointes

  • Congélateurs Martyr.xlsm
    45.1 KB · Affichages: 6

wDog66

XLDnaute Nouveau
Bonjour Constantin

Comme vous utilisez déjà une macro, pourquoi ne pas utiliser l'évènement "Change" dans votre feuille de saisie

Voici une possibilité

A+
 

Pièces jointes

  • wDog66_Congélateurs Martyr.xlsm
    48.7 KB · Affichages: 5

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonsoir,
Je découvre votre proposition avec laquelle je pense pouvoir faire mon "miel"...
J'essaye de comprendre, vu mon pauvre niveau..
- QR devient un "interlocuteur" nécessaire pour l'affichage du MsgBox
- L'action de "Change" intervient sur la colonne "D", donc réinitialise son contenu en fonction de la sortie
- QR peut donc être masquée et à moi d'adapter mes MFC et mes petites formules pour mettre à jour la colonne ETAT. Je vais y arriver, je pense.
Avant de valider cette belle solution, dites moi si j'ai raté quelque chose (C'est presque sûr)
Mais, déjà, avec votre proposition, je pense que vous m'avez comblé !
Bien cordialement,
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Je continue mon exploration...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim QtStock As Integer, QtSortie As Integer
If Not Intersect([N:N], Target) Is Nothing Then
QtStock = Range("D" & Target.Row).Value
QtSortie = Target.Value
If QtSortie > QtStock Then
MsgBox "Vous ne pouvez pas sortir plus de produit qu'il n'y a de stock !"
Else
Application.EnableEvents = False
Range("D" & Target.Row).Value = QtStock - QtSortie
Application.EnableEvents = True
End If
End If
End Sub

Je n'arrive pas à localiser Qtstok et QtSortie...
-QtStock est défini par la ligne
"QtStock = Range("D" & Target.Row).Value"
mais pour QtSortie, je ne pige pas la formule (je vous l'ai dit, c'est normal...:mad:
Quoiqu'il en soit, mille mercis, je vais transposer ces formules dans mon tableau (la journée de demain sera bien occupée :)
Bonne nuit !
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour @wDog66 et bonjour @ChTi160 ,

Merci Jean marie,

J’ai apporté quelques précisions dans la macro « Nettoyage » : J’ai remplacé Tableau2 par tSaisie et ligne 12 par ligne 15.
La macro se lance bien mais finit par m’annoncer un « bug » que voilà :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim QtStock As Integer, QtSortie As Integer
If Not Intersect([N:N], Target) Is Nothing Then
QtStock = Range("D" & Target.Row).Value
QtSortie = Target.Value
If QtSortie > QtStock Then
MsgBox "Vous ne pouvez pas sortir plus de produit qu'il n'y a de stock !"
Else
Application.EnableEvents = False
Range("D" & Target.Row).Value = QtStock – QtSortie
Application.EnableEvents = True
End If
End If
End Sub

Là, je ne sais pas faire…:(

Par ailleurs, je me suis dit que la colonne E (QR) ne servait pas à grand-chose. Je me suis dit aussi que la DATE SORTIE pouvait être supprimée pour peu que j’utilise @[Q]<=0 à la place de [@[DATE SORTIE]]<>"" dans la formule :

=SI([@[DATE SORTIE]]<>"";"Sortie";SI([@Colonne1]<$R$1;"Périmé";SI([@Colonne1]<$R$1+10;"Alerte2";SI([@Colonne1]<$R$1+20;"Alerte1";""))))

Je peux simplement masquer DATE SORTIE et QR car j’ai un peu peur de supprimer ces deux colonnes sans mettre le bazar ailleurs….

Si c’était possible, j’aimerai que le contenu de QS s’efface une fois la macro exécutée.

Ex : Je congèle 10 baguettes de Chia. J’en retire 5 en QS, il en reste donc 5 (Q). Si j’efface manuellement (back space), ça ne perturbe rien et mon stock (Q) reste égal à 5…

J’ai voulu « automatiser » ce principe en ajoutant au précédent code l’instruction :

ActiveCell.Formula R1C1= ""
Je n’ai pas du placer cette instruction au bon endroit et le programme n’a pas aimé du tout…

Pour finir, j’ai un message un peu bizarre lorsque je veux enregistrer votre fichier :
Attention ! Certaines parties de votre document peuvent renfermer des info….

Moi pas comprendre.
Désolé d’abuser à nouveau de votre savoir et surtout de votre temps.

Bien cordialement,
Pierre
 

Pièces jointes

  • wDog66_Congélateurs Martyrter.xlsm
    49.6 KB · Affichages: 3

wDog66

XLDnaute Nouveau
Bonjour constantin,

Comme le "Change " de la feuille saisie est un évènement, il faut penser à le désactiver pour toute opération, comme le nettoyage 😜

Voici le fichier avec les colonnes enlevées, effectivement elle ne servent à rien
et le code modifié en conséquence + le fait d'effacer la quantité saisie


Pour le message, j'utilise les options de confidentialité afin d'éviter de laisser trainer mes données personnelles

J'espère que ce sera clair pour vous

Cordialement
 

Pièces jointes

  • wDog66_Congélateurs Martyrter v2.xlsm
    46.5 KB · Affichages: 4

ChTi160

XLDnaute Barbatruc
Bonsoir le Fil ,
je me suis permis de changer la Colonne cible du Filtre remplacement du 15 par 13

VB:
Range("tSaisie").AutoFilter Field:=13, Criteria1:="Sortie"
    If Range("tSaisie").ListObject.ListColumns(13).Range.SpecialCells(xlCellTypeVisible).Count <= 1 Then

Bonne fin de journée
Jean marie
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonsoir Jean Marie, Bonsoir wDog66,
Visiblement, je ne sais pas compter jusqu'à 13 (Colonne M=13 et non 15). J'ai fait tellement d'essais que j'en ai perdu mon latin. Quand je dis que je suis mauvais... :oops:
J'ai corrigé, j'ai essayé et ça a marché ! 😀
Donc "Toto va bene" !
Mille mercis à vous deux pour votre expertise et votre patience !
Bonne soirée,
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Je n'ai pas au le courage d'attendre demain...
Sur le fichier joint, j'ai renseigné une ligne nouvelle (45). Dans la case jaune, entrez la quantité 5. Le décompte en Q se fait bien et affiche "0" tandis que en M45 (Colonne état) s'affiche "Sortie". Jusque là, tout va bien...
Activez la macro "Enlever les sorties"... Patatras ! "Erreur d'exécution 13" et le joyeux message qui surligne en jaune "QtSortie=Target.Value.
Je suis complètement largué, je l'avoue. Il est sûr que j'ai du commettre une erreur de syntaxe quelque part... Oui mézou ?
Si vous avez une idée, j'en serais ravi.

Bonne soirée,
Pierre
 

Pièces jointes

  • Congélateurs Martyr4.xlsm
    48.8 KB · Affichages: 3

Constantin

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous,
Je vous présente mes excuses les plus confuses.
Je n'avais pas vu ce post qui s'était intercalé entre le 6 et le 8...
Je suis d'autant plus désolé, que, avec le réglage de ChTi160 en post 8, tout marche nickel...

J'ignorais tout des "Options de confidentialité".
Avant de conclure cette discussion résolue grâce à votre patience (il en faut avec moi...), je relisais le code de Nettoyage et m'étonnais de voir qu'en fin de macro, on retrouvais l'instruction "Application.EnableEvents = False" et non pas True... J'imagine que c'est normal puisque ça fonctionne bien, mais je ne comprends pas...

J'ai donc un peu appris et assurément encore beaucoup de choses à comprendre...

Je vous laisse en vous remerciant à nouveau.

Portez-vous bien,
Pierre
 

Constantin

XLDnaute Occasionnel
Supporter XLD
Merci à vous,
J'ai corrigé.
De fait, après l'exécution de "Nettoyage", mon affichage surligné ne fonctionnait plus. Je m’apprêtais à vous interroger, donc à vous embêter.
Maintenant, tout est OK...
Mon prochain souhait est de pouvoir créer un masque de saisie pour afficher le contenu de mes tiroirs (je sens que je vais bien galérer)
Bien à vous,
Pierre
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 259
Membres
103 498
dernier inscrit
FAHDE