Tri par date (activation avec bouton)
Bonjour,
Je viens vers vous aujourd'hui suite à un problème que je rencontre dans un de mes projets. Je dois effectuer un tri par date automatique d'un tableau de valeurs contenant des références, noms, nombres, et dates de livraison de milliers de pièces.
J'ai pour cela fais un test sur un petit tableau, étant novice vba, j'ai avec l'enregistreur de macro créé une macro de tri avancé en fonction de deux dates butoires (date de début et date de fin). J'ai associé un bouton à ce tri pour rendre cela automatique, sauf que lorsque je relance le tri en modifiant une des dates, impossible d'obtenir un résultat satisfaisant (le tri ne se fait pas).
J'ai regardé sur le site la plupart des autres sujets similaires au mien, cependant dans aucun cas il n'y a ce problème...
Donc si quelqu'un pourrait au moins relire le macro et me dire ce qui cloche, ce serait super !
Je vous joint mon programme test.
Merci de votre aide et de votre compréhension
Cordialement
Bonjour. Bienvenue sur le Forum
Essaie comme ceci avec un seul bouton et un seul code
Sub TRI_DATES()
' TRI_DATES Macro
Range(Range("H2:K2"), Range("H2:K2").End(xlDown)).Select
With Selection
.ClearContents
.Borders.Value = 0
End With
Range("A5:D21").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"Feuil1!Criteria"), CopyToRange:=Range("H2"), Unique:=False
Range("H2").Select
End Sub
Cordialement
Bonjour Amadéus,
et tout d'abord, merci pour ta réponse. Je viens de tester ton code, cependant il y a toujours le même soucis : cela n'affiche que le nom des colonnes en haut quand je change la date, et n'affiche pas les valeurs qui correspondent aux dates correctes. (J'ai bien vérifié que cela ne venait pas de l'écriture de mes dates.)
J'ai voulu pousser la chose un peu plus loin en déclarant mes dates de début et de fin comme variables, et en les demandant à l'utilisateur, et je voudrais modifier mon tri de manière à pouvoir trier et afficher les pièces contenues uniquement entre ces deux variables (c'est à dire dans le code du tri ne pas sélectionner une plage de cellules pour les dates, mais bien dire "pour chaque ligne, si la valeur de la date est bien comprise entre la variable DateDebut et la variable DateFin, alors la copier dans un tableau à côté".
Je ne sais pas si c'est clair, mais j'aimerai juste rendre ce code plus simple au niveau de la comparaison de chaque date de pièce.
Voici comment j'ai défini mes deux variables de dates :
Sub Dates()
'Déclaration des variables (utilisation de variant car si on se trompe on ne rentrera pas une date, donc si on met Date ça plante)
Dim DateDebut As Variant, DateFin As Variant
'Suppression des cases de dates
Range("E3").ClearContents
Range("F3").ClearContents
'Demande des dates à l'utilisateur
DateDebut = InputBox("Veuillez entrer la date de début (jj/mm/aa): ")
'Tant que la date n'est pas au bon format, rentrer une nouvelle date
While Not IsDate(DateDebut)
DateDebut = InputBox("Date non valide. Veuillez entrer la date de début (jj/mm/aa): ")
Wend
DateFin = InputBox("Veuillez entrer la date de fin (jj/mm/aa): ")
'Tant que la date n'est pas au bon format, rentrer une nouvelle date
While Not IsDate(DateFin)
DateFin = InputBox("Date non valide. Veuillez entrer la date de fin (jj/mm/aa): ")
Wend
'Attribution des dates dans les cases concernées
Range("E3") = DateDebut
Range("F3") = DateFin
'Affichage de la valeur des dates choisies dans une MsgBox
MsgBox "La date de début est : " & DateDebut & Chr(10) & "La date de fin est : " & DateFin
End Sub
Merci de votre aide.
Bonjour
J'ai rajouté une MFC pour faciliter le contrôle et ne vois pas d'erreur.
Pourrais-tu renvoyer ce fichier avec mise en évidence de l'erreur dont tu parles?
Cordialement
Bonjour,
J'ai finalement réussi à faire mon tri correctement, je vous en remercie.
Cependant, maintenant dans un autre fichier, j'ai les mêmes pièces, avec des références sur une feuille, et des temps de production en fonction de chaque référence sur une autre feuille.
J'aimerai que dans la colonne de ma feuille avec toutes les commandes, il y ai une colonne qui recherche pour chaque pièce le temps de production associé, et qui l'affiche à côté de la bonne pièce. J'ai pour cela utilisé la fonction RechercheV, qui fonctionne bien avec le nom de la pièce, mais lorsque je lui demande de rechercher avec la référence de la pièce, impossible de le faire...
Cela m'embête puisqu'une pièce du même nom peut apparaître plusieurs fois avec une référence différente. Et j'aimerai également que s'il ne trouve pas le temps de production pour la pièce (parce que ce n'est pas référencé dans la feuille des tps de prod), il m'encadre ou me colorie la case en une couleur spécifique pour bien le différencier.
Je joins un fichier pour illustrer tout cela.
Merci beaucoup,
Cordialement
Bonjour ton fichier en retour
Petite remarque:
Je suppose qu'il y a un rapport entre le nombre de pièces et le temps de production par semaine, et donc que le résultat du temps total de production varie en fonction de ce nombre de pièces?
Ex; Ligne 5 , 18 pièces de Ref 1115.
Le temps de production sur la Feuille1 ne donne pas l'indication du Nombre de pièces permettant de déterminer le temps de production pour X pièces.
Cordialement
Bonjour Amadéus,
Je te remercie vraiment pour ton aide, c'est exactement ce qu'il me fallait ! Pour le rapport entre temps de production - nombre de pièces je n'en ai pas besoin, ce tableau me servira a effectuer un planning par la suite et c'est simplement pour fixer une date limite automatique grâce au temps de production.
Encore merci beaucoup à toi, et bonne continuation !
(J'ajoute résolu dans le sujet)