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

Recherche de date en mode autoFilter impossible.

  • Initiateur de la discussion Willy
  • Date de début
W

Willy

Guest
Bonjour à toutes et à tous,

J'utilise 3 USF permettant de filtrer des données de produits pharmaceutiques avec le mode autoFilter.

Le 1er permet de filtrer avec les noms des produits.
Le 2ème permet de filtrer avec la quantité de produits.

Ces deux USF fonctionnent correctement.


Le 3ème est un USF calendrier permettant de filtrer par date de peremption. Le principe de fonctionnement du 3ème USF est
qu'en cliquant sur un jour du calendrier, j'affiche la date sélectionnée dans un textBox qui me sert à filtrer les produits qui ont une date de peremption identique au textBox.

Mais cela ne fonctionne pas. toutes les lignes du tableau sont cachées ( comme si j'avais effectué un filtrage avec les lignes vides seulement ).

Voici ci-dessous la procédure que j'utilise, j'ai essayé divers format de date, aussi bien pour le textbox que pour les cellules " date de peremption" sans grand résultat.
Bref je n'arrive pas à trouver mon erreur.

'********USF CALENDRIER********
'Filtrage par date de peremption

Private Sub userform_Initialize()
Calendrier.Value = Date
Calendrier.SetFocus
Range("A2").Select
End Sub
'*****************************
Private Sub Calendrier_Click()
TextBox1.Value = Format(Calendrier.Value, "dd mmmm yyyy")
Lancer_Recherche
End Sub
'*****************************
Private Sub Lancer_Recherche()
Worksheets("STOCK").AutoFilterMode = False
'RECHERCHE PAR DATE DE PEREMPTION DU PRODUIT
Dim WB As Workbook
Dim WS As Worksheet
Dim Critere As Date
Set WB = ThisWorkbook
With WB
Set WS = .Worksheets("STOCK")
End With
Critere = Format(TextBox1.Value, "dd mmmm yyyy")
If TextBox1.Value = "" Then
MsgBox "Veuillez Sélectionner la date de peremption à rechercher !", , "RECHERCHE INVALIDE"
Else
If WS.AutoFilterMode Then
WS.AutoFilterMode = False
WS.Range("A1").AutoFilter 5, Critere
Else
WS.Range("A1").AutoFilter 5, Critere
End If
End If
End Sub
'******************************

Merci de votre aide et bonne semaine,
Willy
 
W

Willy

Guest
Re bonjour,
En complément de mon premier post, j'ai du nouveau :
J'ai revue ma copie avec l'aide vba sur la fonction autoFilter et j'ai modifié la procédure INITIALISE() en ajoutant la fonction "CDATE" ( que je découvre) comme ceci :

'***********************************
Private Sub initialise()
Worksheets("STOCK").AutoFilterMode = False
'RECHERCHE PAR DATE DE PEREMPTION DU PRODUIT
Dim WB As Workbook
Dim WS As Worksheet

Set WB = ThisWorkbook
With WB
Set WS = .Worksheets("STOCK")
End With

If DateDebut.Value = "" Then
MsgBox "Veuillez saisir la date de peremption à rechercher !", , "RECHERCHE INVALIDE"
Else
If WS.AutoFilterMode Then
WS.AutoFilterMode = False
WS.Range("A1").AutoFilter field:=5, Criteria1:="<=" & Format(CDate(TextBox1.Value))
Else
WS.Range("A1").AutoFilter field:=5, Criteria1:="<=" & Format(CDate(TextBox1.Value))
End If
End If
End Sub
'***********************************

Tout d'abord au niveau de la recherche, j'ai appliqué la fonction Criteria1:="<=" car si je fais "=" j'ai toujours des lignes vides.
Néanmoins afficher les dates inférieures ou égales m'interresse mieux, mais bon pour pas mourir idiot, si quelqu'un a plus d'infos la dessus !!

J'ai donc à présent une petite amélioration avec cette procédure, petite car en fait maintenant la recherche semble fonctionner de façon aléatoire !!!
par exemple :
je sélectionne la date : 03 mars 2003
cela m'affiche deux produits ( normal ils ont cette date de peremption) et aucun produit ne dispose d'une date inférieure.

Je sélectionne la date : 08 mars 2003 et la j'ai à nouveau tous les produits inférieurs et supérieurs à cette date ( et même résultat si à l'ouverture de l'USF je sélectionne directement le 08 mars 2003)!!!!!!

bref j'ai sorti un peu la tête de l'eau pour la replonger aussitôt !!
a+ Willy
 
J

jacquesderyes

Guest
Bonjour WIlly et les amis du Forum

J'ai étudié ton PB
Avant de te proposer un remède pourais-tu me préciser si tu sélectionnes une date au hasard afin de savoir si un produit est concerné ou non ou si tu ne tiens seulement compte que des dates existantes.
Selon ta réponse je pourrai te donner une astuce qui ne passe pas par le calendrier mais par un LBX n'affichant que les dates(sans doublons et triées par ordre croissant).En selectionnant une date dans le LBX le filtre fonctionne .

Bien amicalement

Jacques de ryes
 
W

Willy

Guest
Bonjour Jacques,
Je suis pas sur d'avoir bien compris ton post.

En fait cet USF calendrier permet à l'utilisateur de sélectionner la date de son choix pour connaître l'état du parc pharmaceutique au niveau des dates de peremption.
à mon avis la date du jour me semble être la date par défaut mais je tiens compte que dans certains services, la commande de produit est souvent à date fixe. Donc en sélectionnant cette date, on peut connaître les produits dont la date de peremption arrive à échéance
et éventuellement les produits périmés.
d'ou mon idée d'inserer un calendrier (plus pratique et rapide) plutôt qu'un textbox par exemple.
Est ce que ceci répond à ta question ?
Merci de ton aide
Willy
 
J

jacquesderyes

Guest
RE bonjour Willy

Je n'ai pas le temps tout de suite de reprendre le PB(raisons pro!!!)mais je vais réfléchir(celà m'arrive) et je pense trouver une solution pratique et conviviale(c'est à ne pas perdre de vue lorsqu'il y a plusieurs opérateurs)
Je te donnerait une suite dès que possible mais peut-être qu'entre deux
des réponses te seront données.
Amitiés à tous

Jacques de ryes
 
J

jacquesderyes

Guest
Bonsoir Willy ET UN GRAND GRAND bonsoir à tous les amis du forum enfin retrouvés.
J'ai préparé un petite demo qui devrait te convenir.

2 points importants:
1 °Les cellules contenant des dates doivent être au format jj/mm/aaaa

2° Seul le signe = fonctionne convenablement pour les dates dans critere de filtre(QUI LE COSIDERE COMME DU TEXTE!) car compte tenu du format US mm/dd/yy(numérique) les autres opérateurs sont inéficaces et renvoient des valeurs sans cohérence et pour cause!
Il y a plusieurs astuces mais celles que je connais sont relativement complexes et encombrantes vu le résultat
Compte tenu de la surcharge sur le site je peux t'envoyer le petit fichier sur ta BAL.
Je t'envoie un mail pour te confimer ma réponse sur ce post;
j'attends de tes nouvelles par mail avant de t'envoyer le fichier.
Bien amicalement
JACQUES
 
W

Willy

Guest
Bonsoir Jacques, bonsoir à toutes et à tous
Effectivement cela fait plaisir de retrouver le forum.
Un merci tout particulier à David qui a du certainement batailler pour que le forum fonctionne à nouveau !!

Sans problème Jacques, tu peut m'envoyer la démo et je t'en remercie par avance.
Concernant le format de date j'utilise le format " jj mmmm aaaa " mais si je ne peut le garder, c'est pas bien grave j'utiliserai donc le format jj/mm/aaaa que tu me suggère.
Merci encore et à bientôt
Willy
 

Discussions similaires

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