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

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

  • Initiateur de la discussion Initiateur de la discussion coktoy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

coktoy

Guest
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

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+
 
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
 
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+
 
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.
 
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+
 
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...
 
Re : classer par date, de nouvelles données d'entrée.

Bonjour,

Si tu ne nous montre pas ce que tu as essayé, nous ne pourrons pas t'aider( en tous cas ma bobine🙂)

A+
 
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...
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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