FiltresParMacros

Retour vers Access

Filtrer de 0 à 9 et de A à Z

Exposé : Disposer en permanence de filtres automatisés répondant à la méthode "Like..."
Comme une petite image vaut mieux qu'un long discours, voici ce que nous voulons obtenir - le but est de filtrer les clients dont le nom de famille commence par la lettre représentée sur le bouton.Mais aussi de les récupérer tous et très vite ou d'effectuer une recherche ciblée sur le nom des clients mais aussi sur les dates de la prestation et ceci en utilisant uniquement les macros...Enfin, nous verrons comment implémenter deux calculs entre des champs dans un formulaire

Nous créons les boutons les uns après les autres et sur leur propriété "Sur clic", nous réalisons un appel sur une macro

Pour chaque chiffre et lettre, nous créons la condition "Where" (voir le rond rouge) libellée de manière spécifique
les macros

idem pour la date
les macros
Pour obtenir le détail des commandes, je vous invite à télécharger le fichier exemple.

Si vous incorporez ce formulaire dans un autre, par exemple dans un formulaire de navigation par onglets. Il devient donc un sous-formulaire. Les macros ne fonctionneront plus (vous recevrez un avis signalant que le formulaire n'est lié à aucune table ou requête car le focus est à ce moment sur le formulaire principal qui en effet est indépendant), il faut alors les convertir en procédures événementielles (VBA) pour chaque lettre ou chiffre comme ceci (exemple pour la lettre A, il faut faire un copier-coller pour chaque lettre. Attention de corriger également le nom du contrôle ici cmdExpA dans la gestion des erreurs)

Private Sub cmdExpA_Click()
        On Error GoTo cmdExpA_Click_Err
    
        ' Sélectionne les expediteurs commençant par A
   monfiltre = "[NomFamille] Like ""[Aa]*"""
   Me.FilterOn = False
   Me.Filter = monfiltre
   Me.FilterOn = True
    
cmdExpA_Click_Exit:
                Exit Sub
            
cmdExpA_Click_Err:
        MsgBox Error$
        Resume cmdExpA_Click_Exit
End Sub

Une demande qui revient assez souvent : Comment effectuer un calcul sous MS Access ? En effet, MS Access est nettement moins convivial que Excel pour tout ce qui est opérations mathématiques, et pourtant c'est parfaitement réalisable. L'exemple repris ici effectue des calculs sur le même enregistrement. Il faut se souvenir qu'Access ne traite que l'enregistrement qu'il pointe, si on veut réaliser des opérations inter-enregistrements, il faut travailler d'une autre manière et notamment en utilisant un recordset, je vous renvoie sur une autre page du site pour découvrir cette méthode.

Revenons donc à notre problème, tout d'abord, nous allons utiliser des champs indépendants que nous posons sur le formulaire grâce à cet outil. En remplissant la propriété "source contrôle" (ici pour le champ "nombre de minutes")

 

Et pour le champ prix

Cette petite application permet de gérer le tiroir-caisse d'un cyber-café. Dès que le client entre, nous l'inscrivons dans la base de données. En cliquant dans le champ date, la date du jour s'y inscrit (attention de ne plus cliquer dans les enregistrements déjà encodés) , idem pour son heure d'entrée. Lors de sa sortie, il suffit de cliquer dans le champ ad hoc. Le temps de séjour et l'addition se calculent sur un prix forfaitaire à la minute.

Cliquez ici pour télécharger le fichier cybercafe2000

Fin