Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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: 16

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
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 ?
 

Dranreb

XLDnaute Barbatruc
Si c'est le MsgBox avec une exclamation qui affiche le message, le focus est sur le contrôle dont le texte ne peut être converti en date ou en nombre. Il ne reste qu'à corriger la frappe.
 

Discussions similaires

Réponses
15
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…