Tri/filtre date & cellules avec valeurs communes
Bonjour,
Je démarre avec une base qui contient plusieurs milliers de lignes. Pour chaque lignes ont à plusieurs info dont une date sous format jj/mm/aaaa et des unités qui correspondent à des quantités (quantités et unités sont sur colonnes séparées). J'en suis à la sélection de plages au niveau langage de VBA et ce qui suis dépasse largement ce niveau :/
Mon problème se déroule en 2 étapes :
- La 1ere, j'aimerais pouvoir trier et surtout filtrer les dates par mois. Par exemple, on a des dates du 01/01/12 au 31/01/13 et j'aimerais pouvoir garder seulement les dates qui correspondent au mois de juin à août 2012 inclus (xx/06/2012 au xx/08/2012 ou 01/06/2012 au 31/08/2012)
Les dates étant amenées à changer, l'idéal serait de créer une boite de dialogue demandant la période à filtrer avant d'effectuer l'action.
- Mon 2ème problème est que chaque quantité correspond à une unité (unité 1 : pièce, jerrycan, boite, sac et unité 2: pièce, gramme, kilo, litre). Parfois j'ai besoin sur la base de sélectionner seulement les lignes ayant pour unité les litres par exemple.
De même que le 1er problème, une boîte de dialogue demandant le type d'unités à conserver serait idéal. (une boite pour unité 1 et une boite pour unité 2).
J'ai réalisé mon 1er essai avec l'enregistreur de macro, cependant il n'est pas facilement modulable et au vu du nombre de BDD que j'ai.
Même si vous n'avez que des pistes, je suis preneur car là je n'arrive à avancer.
Merci beaucoup
Ludovic
Salut Ludovic,
Je ne me suis intéressé pour l'instant qu'à la première partie de ton problème. Dans le fichier ci-joint, tu lances une recherche par le bouton "Sélection de dates". Je n'ai pas mis de garde-fou pour le moment ; si tu inscrits autre chose que des dates dans ce UserForm, ça plante. Mais si ce début de solution te convient, on peut voir comment améliorer la chose et comment continuer avec ton autre souci.
Cordialement.
Bonjour Yvouille,
Tout d'abord je tiens à m'excuser pour avoir mis autant de temps à regarder le fichier.
Je viens de regarder et cela correspond tout à fait à ce que je voulais faire
Petit bémol j'ai lu la macro et je n'arrive pas vraiment à retrouver les étapes de sa construction.
" With ActiveWorkbook.Worksheets("Feuil1 (2)").AutoFilter.Sort
.Header = xlYes ' Demande si sous titre ?
.MatchCase = False ' ?
.Orientation = xlTopToBottom ' le sens de la recherche ?
.SortMethod = xlPinYin ' ?
.Apply "
UserForm1.Show ' apparition de la box
If Flag = True Then
Flag = False ' cela signifie qu'une fois les données rentrée, la box disparait?
Exit Sub
End If
Call Tout_ouvrir ' appeler cette macro n'annule pas le filtre ?
For i = 2 To Range("A1048576").End(xlUp).Row
If Cells(i, 7) < Date_début Or Cells(i, 7) > Date_fin Then
Rows(i).Hidden = True
End If
En tout cas merci beaucoup. Concernant les filtres sur les unités, je suppose que cela fonctionne de la même façon ? Je vais essayer de mon côté et ensuite je reviendrai donner des nouvelles en début de semaine prochaine.
A bientôt
Ludovic
Salut, très content de voir que tu te passionnes pour le sujet,
ludovic76 a écrit :Petit bémol j'ai lu la macro et je n'arrive pas vraiment à retrouver les étapes de sa construction.
" With ActiveWorkbook.Worksheets("Feuil1 (2)").AutoFilter.Sort
.Header = xlYes ' Demande si sous titre ?
.MatchCase = False ' ?
.Orientation = xlTopToBottom ' le sens de la recherche ?
.SortMethod = xlPinYin ' ?
.Apply "Ce code, probablement enregistré avec l'enregistreur de macro, était déjà présent dans ton fichier lorsque tu l'as posté.
ludovic76 a écrit :Flag = False ' cela signifie qu'une fois les données rentrée, la box disparait?
Non, c'est un moyen que j'ai trouvé afin de résoudre le problème de la UserForm que tu refermerais avec le bouton "Annuler". Dans ce cas le code passe par
Private Sub CommandButton2_Click()
Unload Me
Flag = True
End Subet quand il revient sur le passage
If Flag = True Then
Flag = False
Exit Sub
End Ifcomme le "flag" est sur true, ça quitte la procédure.
Quelque part oui, puisque ça ouvre toutes les lignes.ludovic76 a écrit :Call Tout_ouvrir ' appeler cette macro n'annule pas le filtre ?
Cordialement.