Autres Trier une listbox par date

Damien281211

XLDnaute Occasionnel
Bonjour a tous
Je vous explique mon soucis
J'effectue une recherche via un formulaire ans une textbox. grâce à une recherche avancée je charge uniquement certaine ligne de ma base de données en fonction d'une reference précise.
Mes données se chargent dans une listbox.
Je souhaiterais savoir si sest possible de trier celle-ci par date chronologique ou alors trier ma colonne de tableau de recherche avancée?
Comment faire l'une ou l'autre ?
Merci d'avance
 

Damien281211

XLDnaute Occasionnel
Je n'ai pas tout compris concernant l'utilisation d'un seul formulaire.
Pour le soucis des dates j'ai malheureusement repris des code vba un peu partout ne connaissant pas bien j'ai fait du mieux possible en étant débutant.
Le transfert du formulaire vers la Stock Congel se fait bien uniquement quand jai une seule ligne dans ma listbox, l'erreur arrive quand je veux transférer plusieur ligne de la listbox.
 

fanch55

XLDnaute Barbatruc
@Damien281211 ,
Ouf, récupéré ma connexion internet, y'avait un serveur de Free planté ( trop de coranaconfinés de connectés ...).

Problème avec ton listcount :
'remise a zéro des label après chargement dans list_box

ListBox_liste.Clear
Next
End If

La Listbox est vidée avant d'avoir fini de la parcourir ... :eek:

Je rejoins l'opinion de @cp4 concernant l'emploi d'un seul formulaire.
Pour les Dates: un excellent calendrier développé par PatrickToulon : Calendar

@cp4
Salut,
l'userform Ucalendar proposé n'a pas été adapté à Excel 64 bits . ;)
 

fanch55

XLDnaute Barbatruc
@Damien281211
VB:
Private Sub enregistrer_Click()

Dim x As Integer
Dim i As Integer

Dim ligne As Integer

If Me.ListBox_liste.ListCount > 0 Then

    'demander confirmation d'enregistrement
    If MsgBox("Voulez-vous enregistrer les" & vbLf & vbLf & _
              "    " & Me.ListBox_liste.ListCount & " entrée(s)", _
              vbQuestion + vbYesNo) = vbYes Then
            
        For ligne = 0 To Me.ListBox_liste.ListCount - 1
            [Tableau_Stock_Congel].ListObject.ListRows.Add
            Dim R As Long
            R = [Tableau_Stock_Congel].ListObject.ListRows.Count
             [Tableau_Stock_Congel[Reference]].Rows(R) = Me.ListBox_liste.List(ligne, 0)
                  [Tableau_Stock_Congel[Lots]].Rows(R) = Me.ListBox_liste.List(ligne, 1)
           [Tableau_Stock_Congel[Date Congel]].Rows(R) = Me.ListBox_liste.List(ligne, 2)
                   [Tableau_Stock_Congel[DLC]].Rows(R) = Me.ListBox_liste.List(ligne, 3)
              [Tableau_Stock_Congel[Quantité]].Rows(R) = Me.ListBox_liste.List(ligne, 4)
          [Tableau_Stock_Congel[Numéro Cadre]].Rows(R) = Me.ListBox_liste.List(ligne, 5)
             [Tableau_Stock_Congel[Entrée le]].Rows(R) = CDate(Now())
' ?????????????????????????????????????????????????????????????????????????????????????????????????????????
'           Si Id doit servir de clé ,
'           une valeur chronologique me semble plus appropriée
' ?????????????????????????????????????????????????????????????????????????????????????????????????????????
             [Tableau_Stock_Congel[Id]].Rows(R) = CDate(Now()) & Right(Format(Timer, "#0.00"), 2)


'           [Tableau_Stock_Congel[ID]].Rows(R) = Sheets("Stock_Congel").Range("q3")
            'incrémenter n°ID de 1
            Sheets("Stock_Congel").Range("q3") = Sheets("Stock_Congel").Range("q3") + 1
                
' ?????????????????????????????????????????????????????????????????????????????????????????????????????????
'       la partie ci-dessous est nébuleuse :
'        elle semble traiter la Désignation ???
'        dans la table de stock_congel, la désignation est associée à celle de Config ( voir formule qui par ailleur n'est pas adaptée )
'        alors pourquoi vouloir mettre à jour Config à partir de stock_congel,
'        la désignation ne concernant pas forcément la bonne référence ?????
'        pourquoi utiliser Textbox_reference qui peut être différent de la référence de la ligne de la listbox
'        et même ne pas avoir été validé ?
' ?????????????????????????????????????????????????????????????????????????????????????????????????????????
'            i = 6
'            Do While Sheets("Config").Cells(i, 2) <> ""
'                If Sheets("Config").Cells(i, 2) Like TextBox_reference Then
'                    Sheets("Config").Cells(i, 3).Value = Sheets("Stock_Congel").Cells(i, 4).Value
'                End If
'            i = i + 1
'            Loop

' ?????????????????????????????????????????????????????????????????????????????????????????????????????????
'       Je suppose que c'est la "colonne1" en bout du tableau9 de la feuille Config
'       pourquoi ne pas l'avoir traitée en même temps que le code au dessus ?
' ?????????????????????????????????????????????????????????????????????????????????????????????????????????

        'incrémentation de 1 au numéro du cadre après click enregistrement
'            x = 6
'            Do While Sheets("Config").Cells(x, 2) <> ""
'                If Sheets("Config").Cells(x, 2) Like TextBox_reference Then
'                    Sheets("Config").Cells(x, 6).Value = Sheets("Config").Cells(x, 6).Value + 1
'                End If
'            x = x + 1
'            Loop
            Dim L As Range
            Set L = [Tableau9[Reference]].Find([Tableau_Stock_Congel[Reference]].Rows(R))
            Set L = [Tableau9[Colonne1]].Rows(L.Row - [Tableau9[#headers]].Row)
                L = L + 1
            Set L = Nothing
    
        Next
        
        ListBox_liste.Clear
        
    End If
            
Else
    MsgBox "Pas d'entrée disponible"

End If
TextBox_numero_cadre = ""
Unload Stock_Cadre
Stock_Cadre.Show

End Sub

Pour les formules dans les colonnes :
Désignation : =RECHERCHEV([@Reference];Tableau9;EQUIV("Designation"; Tableau9[#En-têtes];0);FAUX)
Calibre: =RECHERCHEV([@Reference];Tableau9;EQUIV("Calibre"; Tableau9[#En-têtes];0);FAUX)
 

Damien281211

XLDnaute Occasionnel
je vais tenter d'être le plus clair possible sur mes explications
l'onglet "Config" me sert de base de donnée principal
l'onglet "Stock_Congel" est mon stockage principal
l'onglet "Stock_Petite_Congel" mon stockage secondaire pour la production
J'utilise l'USF "Stock_Congel" pour effectuer mes mise en stock principal, transfert de stock et sortie de stock
mes mise en stock se font comme suite:
- ouverture USF
-clique btn option "Entrée"
-recherche de la référence voulu via la textbox "reference" dans l'onglet "Config"
-clique bouton "Valider" pour alimenter ma "listbox" avec ma recherche
-si une seule référence dans mon cadre je clique sur "enregistrer" ce qui me transfert ma "listbox" dans mon onglet "Stock_Congel"
-si plusieurs références dans mon cadre après avoir cliqué sur "valider" la premiere fois, je clique sur "ajouter entrée" pour ajouter une autre réference (textbox reference invisible, textbox reference2 visible)
-si d'autre référence, la recherche se fait toujours dans textbox reference2
-plusieurs référence dans mon cadre donc plusieurs ligne dans ma listbox
je travaille avec deux textbox car je veux conserver mon numéro de cadre en fonction de ma premiere reference saisie. je garde le même numéro pour les autre références de la listbox pour des raison de stockage.

Pour mes transfert de stock j'utilise le btn option "Transfert"
-recherche de la référence demandé par la production dans l'onglet "Stock_Congel"
-affichage de toutes les lignes correspondant a la référence dans l'ordre chronologique (afin de respecter un FIFO)
La suite n'est pas encore codé
-dans la plupart des cas, clique sur la premiere référence (donc la plus courte en date "DLC"
-transfert dans l'onglet "Stock_Petite_Congel"
-si on veut un numéro de lot en particulier, ont doit pouvoir cliquer sur une autre ligne de la listbox
et faire le transfert, on doit pouvoir également transferer plusieurs ligne en meme temps en fonction des besoin de la production.

Le numéro ID n'est pas encore correctement codé, pour le moment il s'incrément a chaque nouvelle ligne de listbox alors qu'il devrait uniquement en cliquant sur enregistrer pour que chaque ligne de la listbox est le meme numéro.
Le but est que si je sort un cadre et qu'il y a plusieurs références différentes dedans, toutes les références de celui-ci se chargent même si la références est différente de ma recherche.
L'onglet "archivage" me servira a garder une trace de tous les mouvements de stock effectué.

Je pense avoir tout dit et espère avoir était le plus clair possible
 

Damien281211

XLDnaute Occasionnel
j'ai supprimé toutes les formules sur mon dernier fichier ci-joint, corrigé l'alimentation de la colonne "désignation" et "calibre"
le transfert de plusieurs lignes de la listbox vers le tableau "Stock_Congel" se fait correctement.
Je dois encore modifier le codage pour les dates.
 

Pièces jointes

  • Stock Cadres_test id.xlsm
    76.9 KB · Affichages: 20

Damien281211

XLDnaute Occasionnel
en effet je n'ai pas rajouter le code concernant la modification de la virgule en point, mon système est configuré avec le point pour signe de décimal
un cadre est l'équivalent d'une palette, dedans on mets soit des caissettes en plastiques ou des cartons de marchandises. La référence du produit est inscrit sur la caissette ou le carton.
Par exemples dans un cadre on mets environ 55 caissettes, il peut y avoir par exemple 20 caissettes en référence 156.004 20 en 156.005 et 15 en 156.006.
de plus il peut y avoir dans les 20 caissettes en 156.004 des numéro de lot différent.
La s'est l'explication avec le plus de problématique possible lors de l'enregistrement je pense
 

Damien281211

XLDnaute Occasionnel
En effet la dernière colonne est encore en trop dans mon tableau.
La colonne (i,6) me sert pour donner un numéro de cadre ajouter avec "-" et la colonne lettre pour faire mon assemblage exemple la ref 156.005 donnera lors de la prochaine entrée en stock 20 - C.
Et après avoir cliqué sur enregistrer il y a une instrumentation sur le 20 pour donner 21 lors du prochain enregistrement etc etc.
Comme je suis avec un signe décimal avec un "." dans tous mes tableaux mes reference comporte un "."
 

fanch55

XLDnaute Barbatruc
@cp4
C'est quoi le Tableau94 ? chez moi pour le même fichier c'est le Tableau9.
La "colonne1" est bien prise en compte puisque le tableau commence en colonne 2 .
Damien ne l'a pas encore nommée .
La colonne "doublon" ne fait pas partie du tableau et ne sert à rien.
 

fanch55

XLDnaute Barbatruc
@Damien281211
Tu as encore des formules (cachées) dans ton tableau, c'est très ch.... de les supprimer quand c'est un tableau structuré .
Elles sont repérées sur les cellules par un petit coin vert en haut gauche .
Pour les voir , cliquer sur Formules puis sur Afficher Formules
1585832258693.png


Effectivement, des formules sont résiduelles.
On peut même voir que certaines dates sont "incorrectes" car certainement entrées en tant que chaine de caractères ce qui gênera par la suite toute opération de recherche par date .
1585832381929.png


Il faut exécuter le code ci-dessous à mettre dans ton module :
VB:
Sub Supprime_Formule()
Dim Plage    As Range
  
   ' On enlève totalement les formules du tableau
   ' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
   [Tableau_Stock_Congel].Copy
   [Tableau_Stock_Congel].PasteSpecial Paste:=xlPasteValues
      
   ' On remet les dates au bon format
   ' -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    For Each Plage In [Tableau_Stock_Congel[[Date Congel]:[DLC]]]
        Plage.Value = CDate(Plage.Text)
    Next
    
End Sub

Tu devrais te retrouver avec la table ci-dessous:
1585832657888.png


Tu te remets en affichage Normal en re-cliquant sur Afficher Formules
1585832760620.png
 

Damien281211

XLDnaute Occasionnel
Je n'ai pas trouvé d'autre solution pour pouvoir faire plusieur entrée sans perdre mon numero de cadre.
L'accès au bouton "valider" était bloqué à l'origine comme tu l'indiques si tous les champs ne sont pas remplis. Je l'ai étirer afin de pouvoir effectuer les essais sans devoir tout remplir à chaque fois.
Sest prévu de le remettre une fois tout mo codage en ordre et terminé
 

Damien281211

XLDnaute Occasionnel
Je dois voir avec mon responsable après le confinement, certaines référence seront surement supprimé, dans tous les cas tu as raison si le numéro de cadre reste figé cela règle mon problème, je dois juste trouver la façon de le figer sur la première référence saisie.
Pareil logiquement il ne devra plus avoir de problème de multi référence par cadre car cela entraine de gros problème pour la production. Je reprend tout le BAZAR pour être poli de mon prédécesseur.
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 234
Membres
103 162
dernier inscrit
fcfg