XL 2016 Trie de date avec VBA

plaiiz

XLDnaute Nouveau
Bonjour a vous le forum , J'ai un petit problème de trie de date , j'ai un userform qui insére des donnée dans ma feuille stock (désignation , quantité ,dlc ) , je voudrai pouvoir les trier par jour (hier , aujourd'hui , demain , etc ) j'ai utilisé une mise en forme conditionnelle pour qu'il me colore les cellule selon les dates , et je peut les trier via le tableau , mais j'aimerai pouvoir automatisé cela pour qu"il me l'affiche directement dans ma feuille géneral .
Quelqun aurai quelque piste ?
Cordialement
 

Pièces jointes

  • essaye DLC VBA (5).xlsm
    40.2 KB · Affichages: 15

Dranreb

XLDnaute Barbatruc
Bonjour.
Conseil: enregistrez des dates dans vos cellule. Là ce sont des textes que vous y mettez.
VB:
    On Error Resume Next
    .Range("C" & ligne) = CDate(tbDateJour.Text)
    .Range("D" & ligne) = CDate(tbDLC.Text)
    On Error Goto 0
Et aussi: ne laissez pas de ligne vide dans les tableaux.

Après quoi je l'aurais à peu près écrite comme ça votre procédure :
VB:
Private Sub CommandButton1_Click()
   Dim TVL(1 To 1, 1 To 4), LOt As ListObject, Qté As Long, Numéro As Long
   On Error Resume Next
   TVL(1, 1) = ListBox1.Value
   TVL(1, 2) = CDate(tbDateJour.Text): If Err Then tbDateJour.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   TVL(1, 3) = CDate(tbDLC.Text): If Err Then tbDLC.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   TVL(1, 4) = CCur(tbprix.Text): If Err Then Me.tbprix.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbNo Then Exit Sub
   Qté = CByte(tbQte.Text): If Err Then Qté = 1
   On Error GoTo 0
   Set LOt = Sheets("Stock").ListObjects(1)
   Numéro = WorksheetFunction.Max(LOt.DataBodyRange.Columns(0))
   Do While Qté > 0
      Numéro = Numéro + 1
      With LOt.ListRows.Add.Range
         .Cells(1, 0).Value = Numéro
         .Value = TVL
         End With
      Qté = Qté - 1: Loop
   LOt.Sort.Apply
   Me.tbDLC = ""
   Me.tbQte = ""
   Unload Me
   Unload base
   End Sub
 
Dernière édition:

plaiiz

XLDnaute Nouveau
Bonjour.
Conseil: enregistrez des dates dans vos cellule. Là ce sont des textes que vous y mettez.
VB:
    On Error Resume Next
    .Range("C" & ligne) = CDate(tbDateJour.Text)
    .Range("D" & ligne) = CDate(tbDLC.Text)
    On Error Goto 0
Et aussi: ne laissez pas de ligne vide dans les tableaux.

Après quoi je l'aurais à peu près écrite comme ça votre procédure :
VB:
Private Sub CommandButton1_Click()
   Dim TVL(1 To 1, 1 To 4), LOt As ListObject, Qté As Long, Numéro As Long
   On Error Resume Next
   TVL(1, 1) = ListBox1.Value
   TVL(1, 2) = CDate(tbDateJour.Text): If Err Then tbDateJour.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   TVL(1, 3) = CDate(tbDLC.Text): If Err Then tbDLC.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   TVL(1, 4) = CCur(tbprix.Text): If Err Then Me.tbprix.SetFocus: MsgBox Err.Description, vbExclamation, Me.Caption: Exit Sub
   If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbNo Then Exit Sub
   Qté = CByte(tbQte.Text): If Err Then Qté = 1
   On Error GoTo 0
   Set LOt = Sheets("Stock").ListObjects(1)
   Numéro = WorksheetFunction.Max(LOt.DataBodyRange.Columns(0))
   Do While Qté > 0
      Numéro = Numéro + 1
      With LOt.ListRows.Add.Range
         .Cells(1, 0).Value = Numéro
         .Value = TVL
         End With
      Qté = Qté - 1: Loop
   LOt.Sort.Apply
   Me.tbDLC = ""
   Me.tbQte = ""
   Unload Me
   Unload base
   End Sub
Super merci de tes conseil , je doit l'insérer ou cela ??

On Error Resume Next
.Range("C" & ligne) = CDate(tbDateJour.Text)
.Range("D" & ligne) = CDate(tbDLC.Text)
On Error Goto 0
et l'autre je doit le mettre a la place de celui que j'ai deja ?
 

Discussions similaires

Statistiques des forums

Discussions
312 337
Messages
2 087 392
Membres
103 536
dernier inscrit
komivi