Suivi conso

Bonjour

La version suivante et au cas ou les fichiers pour l'userform

Obligé de zipper

11walden.zip (4.62 Ko)

Merci Banzai. L'usf apparait toujours vide, même en changeant de version ou en important l'usf...

Je vais essayer de le reconstruire de mon pc... Il me manquera sans doute le nom de certains contrôles...

Merci de ta patience...

Amicalement


Je pense avoir identifier le problème : le contrôle listview... Je ne peux pas le créer "le contrôle ne peut pas être crée car il n'est pas correctement licencié"... Je vais ce que je trouve à ce sujet sur le net.

Bonjour

Si cela peut t"aider :

10usf.zip (14.41 Ko)

Bonjour à tous,

J'y suis arrivée ! Après une après midi de recherche...

Mais bon, c'est ok !

Le fichier est vraiment très très très très très bien !! Merci beaucoup Banzai ! J'ai seulement quelques réserves pour la "sortie d'échantillons : en fait, c'est le programme qui choisit les flacons qu'il va sortir du stock, j'aurais eu besoin que ce soit l'utilisateur qui choisisse.

Je m'explique :

par ex. si je rajoute 10 flacons de 5 ml aux flacons déjà enregistrés (1 flacon de 50 ml et 2 flacons de 25 ml): si je souhaite sortir 32.5 ml, puis que je coche les cases 25 et 5, le programme choisit les flacons à utiliser pour répondre à la demande....

Pas sûre d'être claire... Dis moi !

Merci en tous cas de ton excellent travail !!

Amicalement


@ gmb : MERCI beaucoup de ton aide ! Vraiment sympa de ta part !

A+

Bonsoir

Walden a écrit :

en fait, c'est le programme qui choisit les flacons qu'il va sortir du stock, j'aurais eu besoin que ce soit l'utilisateur qui choisisse.

Pas trop d'accord c'est bien l'utilisateur qui détermine le conditionnement qu'il veut

Dans ton exemple c'est bien l'utilisateur qui choit 25 et 5 et que le tube de 25 porte le numéro 1 ou le 3728 n'a aucune importance

Bonjour Banzai, le forum,

Pas trop d'accord c'est bien l'utilisateur qui détermine le conditionnement qu'il veut

Dans ton exemple c'est bien l'utilisateur qui choit 25 et 5 et que le tube de 25 porte le numéro 1 ou le 3728 n'a aucune importance

Je suis ok avec toi que le n° n'a pas d'importance.

En fait, je ne comprends pas comment fonctionne la macro lors d'une sortie de stock ... Oui, j'ai honte...

Je te renvoie un exemple, cette fois sortie de 32 ml

Aurais-tu la gentillesse de m'expliquer stp ?

Par contre, il est parfaitement clair, que ton travail est encore plus abouti que tout ce à quoi j'avais pensé : MERCI mille fois !

Amicalement

Bonjour

Il y avait un bug que je pense avoir corrigé

Des commentaire dans la partie (pour moi) la plus difficile à comprendre : Le retrait

A vérifier

Bonjour Banzai

Je regarde tout ça et je te dis,

Merci beaucoup !

Amicalement

Bon, après avoir regardé rapidement, je pense qu'il va me falloir l'après midi (au moins...) pour comprendre !

Je t'avoue que j'aime beaucoup le double affichage possible des entrées (+/- détails) : crois-tu qu'il serait possible de réaliser les sorties de stocks de la même manière avec accès au détail ??

Et dans le cas d'un volume demandé < au volume total (somme des tubes sélectionnés), la possibilité de choisir le tube à recongeler ??

Si ce n'est pas possible, ce n'est pas grave, c'est déjà plus que bien !

Amicalement

Bonjour

2 questions --> 1 réponse --> non

Pourquoi avoir le détail en sortie, quelle utilité ?

On vient chercher une quantité pas un tube en particulier

Cela toujours le dernier tube non complet qui sera proposé pour le recongeler

Pourquoi avoir le détail en sortie, quelle utilité ?

On vient chercher une quantité pas un tube en particulier

Parfois on peut être amené à récupérer un tube en particulier, si... Mais tant pis ! C'est déjà génial !!!

Merci beaucoup !

Re-,

Y aurait-il quelqu'un (Banzai ou quelqu'un d'autre...) qui aurait la gentillesse de m'expliquer cette partie du code, je n'arrive pas à comprendre...

Sub ListViewGlobal()

Dim Mondico As Object

Dim J As Long, NbLg As Long

Dim Nb As Integer, I As Integer

If Ws.Range("M2") <> "" Then

Ws.Range("M2:Q" & Ws.Range("M" & Rows.Count).End(xlUp).Row).ClearContents

End If

NbLg = Ws.Range("A" & Rows.Count).End(xlUp).Row

Set Mondico = CreateObject("Scripting.dictionary")

For J = 2 To NbLg

Mondico(Ws.Range("B" & J).Value) = ""

Next J

If Mondico.Count > 0 Then

Ws.Range("M2").Resize(Mondico.Count) = Application.Transpose(Mondico.keys)

Ws.Range("N2").Formula = "=COUNTIF($B$2:$B$" & NbLg & ",M2)"

Ws.Range("O2").Formula = "=M2*N2"

Ws.Range("P2").Formula = "=SUMPRODUCT(($D$2:$D$" & NbLg & "<>"""")*($B$2:$B$" & NbLg & "=M2)*($B$2:$B$" & NbLg & "))"

Ws.Range("Q2").Formula = "=O2-P2"

Ws.Range("N2:Q2").AutoFill Ws.Range("N2:Q" & 1 + Mondico.Count), xlFillSeries

End If

With Me.ListView1

.ListItems.Clear

'Titres des colonnes

With .ColumnHeaders

.Clear

'Ajout des colonnes

.Add , , "Condit.", 60, lvwColumnLeft

.Add , , "Nb Flacon", 60, lvwColumnCenter

.Add , , "Volume", 60, lvwColumnCenter

.Add , , "Prélevée", 60, lvwColumnCenter

.Add , , "Reste", 60, lvwColumnCenter

End With

For J = 2 To Ws.Range("M" & Rows.Count).End(xlUp).Row

'on remplit la première colonne de la listview avec la valeur de la variable

.ListItems.Add , Ws.Range("M" & J).Address, Ws.Range("M" & J)

Nb = Nb + 1

'on remplit les autres colonnes de la listview

For I = 2 To .ColumnHeaders.Count

.ListItems(Nb).ListSubItems.Add , , Ws.Cells(J, I + 12)

Next I

If Ws.Range("P" & J) <> 0 Then

.ListItems(Nb).ForeColor = RGB(255, 0, 0)

For I = 1 To .ColumnHeaders.Count - 1

.ListItems(Nb).ListSubItems(I).ForeColor = RGB(255, 0, 0)

Next I

End If

Next J

End With

End Sub

Merci beaucoup !

Amicalement

Bonjour

Bizarre je n'avais pas vu ton message précédent

Sinon pour le code

Grosso modo

Comme le tableau de la base de donnée est construit de telle sorte qu'une ligne = 1 conditionnement = 1 en quantité tube

Je refais un tableau totalisant le nombre de tube par conditionnement

Une fois ce tableau fait il n'y juste qu'à incorporer les données dans la ListView

Particularité si un "lot" est entamé la ligne dans la ListView sera rouge

A peu près les mêmes commentaires dans le fichier

OK, merci beaucoup Banzai, j'ai saisi le principe !

Re-,

Avant de clôturer le fil, je reviens avec 2 nouvelles demandes (pas sûres que ce soit possible...) :

1. est-il compliqué de modifier le code afin que je puisse utiliser les 10 premières lignes : je pensais renseigner dans cet espace le nom du produit, sa référence et autres caractéristiques...

2. comme je le disais dans un de mes post précédents, je reçois régulièrement différents produits et je pensais dupliquer la feuille modèle "BdD" à chaque réception d'un nouveau produit, et ce dans le même classeur. Est-ce possible ??

Merci beaucoup,

Amicalement

Bonsoir

Beaucoup de choses sont possibles avec Excel : Il faut juste les faire

10 lignes pour renseigner un produit : il est si dangereux que ça ?

Pour décaler les bases ce n'est pas compliqué en soi il suffit d'adapter les boucles afin quelles partent de la bonne ligne

Ensuite dupliquer les bases, cela implique de savoir avec quelles bases tu vas travailler

Une idée de réalisation

Bonjour Banzai, le forum,

Merci pour les 10 lignes supplémentaires : , non pas de produits dangereux, mais très très suivi !

Pour décaler les bases ce n'est pas compliqué en soi il suffit d'adapter les boucles afin quelles partent de la bonne ligne

J'ai vu, merci aussi pour les explications dans le code !

cela implique de savoir avec quelles bases tu vas travailler

J'aime beaucoup cette façon de faire, moi, je pensais "simplement" dupliquer une feuille modèle... Donc je garde ta version, mais (j'abuse, je sais...), crois-tu qu'il soit aussi possible de pouvoir lancer l'usf depuis un onglet "Produit" ?

Merci beaucoup de ton implication et de tes bonnes idées (comme toujours...)

Bonne journée,

Amicalement

EDIT :

crois-tu qu'il soit aussi possible de pouvoir lancer l'usf depuis un onglet "Produit" ?

Je vais essayer via Thisworkbook en excluant la feuille Menu ! Ça devrait marcher !

J'ai une erreur 91, "variable objet ou variable de bloc with non définie" avec la ligne "UserForm1.Show 0" surlignée dans le module 1. Voici mon code (pas optimal, mais je pense qu'il devrait fonctionner...) :

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Ws As Worksheet
For Each Ws In Worksheets
        Application.DisplayAlerts = False
        If Ws.Name <> "Menu" Then
                If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
            OuvreUsf
        End If
        End If
    Next
Application.DisplayAlerts = True
End Sub

Une idée ??

Bonjour

Bon alors la solution proposée ne te convient pas ?

Il faudrait le fichier avec lequel tu travailles parce qu'avec dans la version 7 j'avais fait des modifs

Donc tu vas être obligée de créer la feuille avant de pouvoir y cliquer dessus

Si, si ! elle me convient très bien, c'est juste que j'aurais voulu avoir la possibilité d'ouvrir l'usf depuis la page du produit...

Si ce n'est pas possible, ce n'est pas grave ! Ta façon de faire ouvre de nouvelles perspectives ! Je me dis que je peux exploiter cette feuille "Menu" et y ajouter un récap. (voir ci-joint)... Comme bien souvent, je m'en remets à ton avis, si tu veux bien...

Amicalement

Bonjour

Je te donne mon avis

Si l'on utilise un Userform c'est (en principe) pour ne pas voir la base de données

Le stockage des informations doit être transparent pour l'utilisateur

Si vraiment tu veux voir la page, il suffit de rajouter un Select

    End If
    Set WsBase = Sheets(Target.Value)
    WsBase.Select
    OuvreUsf
  End If
End Sub
Rechercher des sujets similaires à "suivi conso"