classer par date, de nouvelles données d'entrée.

coktoy

XLDnaute Nouveau
Bonjour à tous,

J'ai créé un formulaire VBA permettant à un utilisateur de pouvoir rentrer de nouvelles données sur un fichier excel. je souhaiterais qu'à chaque nouvelle entrée, celle-ci vienne se classer selon la date sans que l'utilisateur n'est besoin d'utiliser la fonction trier. Après quelques recherches, je n'ai pas réussit à mettre en place un code à partir des exemples trouvés. C'est pourquoi un peu d'aide serait la bienvenue, merci....

ci-joint le fichier avec quelques données :
 

Pièces jointes

  • formularioinicialdata2ult1.zip
    33.7 KB · Affichages: 58
G

Guest

Guest
Re : classer par date, de nouvelles données d'entrée.

Bonjour,

Vois si cela te conviens, l'ordre de tri est en bas de la macro de cmdAdd_Click:

VB:
Private Sub cmdadd_Click()
    Dim reference As String
    Dim description As String
    Dim subprocess As String
    Dim transportmode As String
    Dim legs As String
    Dim family As String
    Dim phase As String
    Dim eventtype As String
    Dim site As String
    Dim dates As Date
 
    reference = txtreference.Value
    description = txtdescription.Value
    subprocess = cmboxsubprocess.Value
    transportmode = cmboxtransportmode.Value
    legs = cmboxlegs.Value
    family = cmboxfamily.Value
    phase = Cmbfase.Value
    eventtype = Cmboxeventtype.Value
    site = Cmboxsite.Value
    dates = DTPicker1.Value
 
 
    oversize = optoversize.Value
    logistique = optlogistique.Value
    If oversize = "True" Then
        hojadestino = "Oversize"
    ElseIf logistique = "True" Then
        hojadestino = "Logistic"
    End If
 
    With Sheets(hojadestino)
        With .Range("A" & .Rows.Count).End(xlUp).Offset(1)
            If oversize = "True" Then
                .Resize(, 8).Value = Array(dates, description, subprocess, transportmode, lefs, family, phase)
 
            ElseIf logistique = "True" Then
                .Resize(, 8).Value = Array(dates, reference, description, subprocess, family, phase, eventype, site)
            End If
        End With
        'Tri par date
        .Range("A2").CurrentRegion.Sort key1:=plg.Cells(2, 1), order1:=xlAscending, Header:=xlYes
    End With
End Sub

A+
 

coktoy

XLDnaute Nouveau
Re : classer par date, de nouvelles données d'entrée.

Merci Hasco,

Mais il y a un petit problème, le code nous envoi une erreur "object required" sur :
[ .Range("A2").CurrentRegion.Sort key1:=plg.Cells(2, 1), order1:=xlAscending, Header:=xlYes ]...
Et à quoi sert le CurrentRegion, petite curiosité.

Merci pour tout
 
G

Guest

Guest
Re : classer par date, de nouvelles données d'entrée.

Re,

En lève le
Code:
Key1:= plg.Cells(2, 1)
pour le remplacer par
Code:
Key1:= .Range("A2")

Quant au CurrentRegion il sert à retourner le tableau entier Voir l'aide F1 pour ce genre de question.

A+
 

coktoy

XLDnaute Nouveau
Re : classer par date, de nouvelles données d'entrée.

Merci, ça marche parfaitement bien.

Ps: une petite curiosité qui me viens tout juste en tête, est-il possible demander à l'utilisateur de renseigner tout les champs pour ajouter la nouvelle entrée?? (Si c'est pas trop demandé comme tu m'as déjà beaucoup aidé)

Merci encore pour tout et bonne fin de journée.
 
G

Guest

Guest
Re : classer par date, de nouvelles données d'entrée.

Re,

Deux possibilités,

Soit en cours de saisie, en obligeant l'utilisateur à saisir quelque chose dans le contrôle,
sur évènement Exit des contrôles, par exemple

Soit avant la validation en parcourant les contrôles dans une boucle for.

Dans l'un comme l'autre des cas tu trouveras des exemples sur le forum.

A+
 

coktoy

XLDnaute Nouveau
Re : classer par date, de nouvelles données d'entrée.

Re,
j'ai fais quelque recherches pour essayer avec un boucle for mais je dois vraiment pas être assez bon, car je n'y arrive pas du tout...
Et dans un soucis de perfectionnement du formulaire, je voudrais savoir comment faire pour :
Aprés l'ajout d'une donnée, comment faire pour effacer tout les champs des listbox (ça ne marche pas avec clear sauf pour les textbox).
Merci d'avance...
 

coktoy

XLDnaute Nouveau
Re : classer par date, de nouvelles données d'entrée.

Bonjour Hasco,
Excuses-moi de ne pas t'avoir répondu, mais je n'était pas disponible hier et aujourd'hui (raison professionnelle). En tout cas, j'ai un peu potassée et j'ai réussit à résoudre le problème en utilisant un if c'est un peu long mais ça marche bien. Par contre en faisant tester le formulaire par un de mes collègue, celui-ci m'a fait part de quelques petits soucis :
- Quand tu clics sur le formulaire n'importe où dans le vide, le calendrier retourne a la date initiale, étrange non? (peut-on faire en sorte que la date initiale soit celle d'aujourd'hui?).
- Mon collègue l'a aussi testé sur son PC portable et sur son écran la fenêtre n'apparait pas entièrement car trop grande, existe-t-il un moyen de l'adapter automatiquement?
Voilà merci d'avance et bonne soirée...
 

coktoy

XLDnaute Nouveau
Re : classer par date, de nouvelles données d'entrée.

Oups, j'avais oublié le excel...
Cijoint.fr - Service gratuit de dépôt de fichiers
par contre, quand j'essaie de le sauvegarder en .xls la taille passe à environ 8000ko, je sais pas trop comment faire sachant que je l'ai déjà vidé de 99% des données
merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux