Filtrer un formulaire Access au fil des lettres tapées

Поділитися
Вставка
  • Опубліковано 22 гру 2024

КОМЕНТАРІ • 20

  • @alainwattelet9961
    @alainwattelet9961 11 місяців тому +1

    Bonjour Stéphane,
    Merci.

    •  11 місяців тому

      Bonjour Alain.
      Merci à vous.

  • @barto107simpsons6
    @barto107simpsons6 11 місяців тому +1

    Bonjour Stéphane, merci de continuer à nous offrir des cours et de nous partager vos connaissances pour cette nouvelle année 2024. C'est toujours très instructifs et bien expliqué 👍
    Par contre après avoir suivi le cours, la fonction recherche fonctionne correctement mais après chaque frappe de caractères, le focus se fait sur le champ libellé "champfiltre" et non pas sur le champ libellé "Textefiltre", du coup il faut à chaque fois recliquer sur le champ libellé "Textefiltre" pour continuer la recherche, une idée de mon erreur ?
    en relisant le code de l'étiquette filtrer, je trouve un caractère + qui n'est pas conservé dans l'éditeur VBA le problème vient il de là ?
    Me.Filter = "[" & Me![champFiltre] & "]" & + "like '" & lettres & "*'"

    •  11 місяців тому +1

      Bonjour mon Cher barto107simpsons, très heureux de vous retrouver. Il est probable que vous ayez omis le code rendant le focus à cette zone de texte et replaçant le point d'insertion à la fin de la saisie :
      Me.texteFiltre.SetFocus
      SendKeys "{END}"

    • @barto107simpsons6
      @barto107simpsons6 11 місяців тому

      merci si je peux me permettre une remarque ce serait pratique d'avoir également la base corrigée téléchargeable sur votre site 😉dans mon cas je vais relire le code car j'ai bien cette instruction dans mon select case et également dans l'étiquette j'ai dû raté quelque chose

    •  11 місяців тому +1

      ​@@barto107simpsons6Oui je comprends mais vous savez, tout le code est donné dans le pas à pas détaillé sur le site. Ces instructions doivent être placées en fin de code.

    • @EldoEldo-e3y
      @EldoEldo-e3y 9 місяців тому

      @ J'ai le même souci que @barto107simpsons6
      Pourtant, aucune erreur dans le code car je l'ai copié de votre site et les champs correspondent correspondent bien aux 2 champs de mon form.
      Je ne comprends pas d'où vient le problème. Lorsque je tape la 1ère lettre de la valeur recherchée, le focus se met sur l'objet suivant en fonction de l'ordre de tabulation.
      J'ai aussi remarqué que lorsque je supprime la valeur de mon champ textefiltre pour réencoder, la valeur précédente reste en mémoire (exemple : je tape CCC, je supprime, je tape H et il apparaît CCCH) même avec un me.requery
      Voici le code, il n'y a aucune erreur.
      Option Compare Database
      Dim lettres As String
      Private Sub Form_Load()
      Me.champfiltre.Value = "Type"
      Me.textefiltre.SetFocus
      End Sub
      Private Sub textefiltre_KeyUp(KeyCode As Integer, Shift As Integer)
      Dim i As Integer
      i = KeyCode
      Select Case i
      Case 8
      If Len(lettres) = 1 Or Len(lettres) = 0 Then
      lettres = ""
      Else
      lettres = Left(lettres, Len(lettres) - 1)
      End If
      GoTo filtrer
      Case 37, 39
      SendKeys "{END}"
      Case 32, 48 To 57, 65 To 90, 97 To 122
      lettres = lettres & Chr(i)
      Me![textefiltre] = lettres
      GoTo filtrer
      End Select
      Exit Sub
      filtrer:
      If Len(lettres) = 0 Then
      Me.FilterOn = False
      Else
      Me.Filter = "[" & Me![champfiltre] & "]" & "like '" & lettres & "*'"
      Me.FilterOn = True
      End If
      Me.OrderBy = "[" & Me!champfiltre & "] " & "ASC"
      Me.OrderByOn = True
      Me.textefiltre.SetFocus
      SendKeys "{END}"
      End Sub

  • @ferratasma719
    @ferratasma719 11 місяців тому +1

    Bonsoir monsieur, j'ai un petit problème,je veux que chaque Num d'enregistrement soit lié a un médecin et que l'autre médecin n'a pas le droit d'accéder

    •  11 місяців тому

      Bonsoir Monsieur.
      Je ne sais pas si j'ai bien compris.
      Un petit code VBA vérifiant le num, s'il ne lui est pas attribué, doit lui empêcher d'accéder aux informations des autres.

  • @EldoEldo-e3y
    @EldoEldo-e3y 9 місяців тому +1

    Ton code ne fonctionne pas
    J'ai copié ton code mais le focus se met sur l'objet suivant par ordre de tabulation après avoir tapé un caractère.
    Je remarque aussi que lorsque je supprime la valeur que j'ai encodé dans le champ indépendant textefiltre et que je réencode, il me remet avant la lettre que je tape ce que j'ai tapé précédemment et que j'avais supprimé.
    Private Sub Form_Load()
    Me.champfiltre.Value = "Type"
    Me.textefiltre.SetFocus
    End Sub
    Private Sub textefiltre_KeyUp(KeyCode As Integer, Shift As Integer)
    Dim i As Integer
    i = KeyCode
    Select Case i
    Case 8
    If Len(lettres) = 1 Or Len(lettres) = 0 Then
    lettres = ""
    Else
    lettres = Left(lettres, Len(lettres) - 1)
    End If
    GoTo filtrer
    Case 37, 39
    SendKeys "{END}"
    Case 32, 48 To 57, 65 To 90, 97 To 122
    lettres = lettres & Chr(i)
    Me![textefiltre] = lettres
    GoTo filtrer
    End Select
    Exit Sub
    filtrer:
    If Len(lettres) = 0 Then
    Me.FilterOn = False
    Else
    Me.Filter = "[" & Me![champfiltre] & "]" & "like '" & lettres & "*'"
    Me.FilterOn = True
    End If
    Me.OrderBy = "[" & Me!champfiltre & "] " & "ASC"
    Me.OrderByOn = True
    Me.textefiltre.SetFocus
    SendKeys "{END}"
    End Sub

    •  9 місяців тому

      Ce n'est pas normal car nous désignons explicitement le contrôle du formulaire par le code VBA ou alors vous avez un souci dans l'utilisation du SendKeys. A première vue, tout semble en ordre dans votre code mais il me faut vérifier plus attentivement.

    • @EldoEldo-e3y
      @EldoEldo-e3y 9 місяців тому

      @ Ton code est vraiment pas top avec cet horrible Sendkey et sauf gestionnaires d'erreurs, l'instruction GoTo est à bannir.
      Voici le code amélioré :
      Private Sub textefiltre_KeyPress(KeyAscii As Integer)
      Dim ControlText As String
      ControlText = textefiltre.Text & Chr(KeyAscii)
      Me.Filter = "[" & Me![champfiltre] & "] Like '" & ControlText & "*'"
      Me.FilterOn = True
      Me.OrderBy = "[" & Me!champfiltre & "]"
      Me.OrderByOn = True
      Me.textefiltre.SelStart = Len(ControlText)
      End Sub

  • @homelearning547
    @homelearning547 11 місяців тому +1

    Bonjour à vous
    Besoin d'aide urgemment
    J'ai mis un mot de passe sur ma base de données Access mais lorsque j'essaie de me connecter à la base, j'ai un message d'erreur : l'application est ouverte en mode exclusif ou utilisée par un autre utilisateur. Ci dessous Ma chaîne de connexion : "Provider= Microsoft.Ace.oledb.12.0; password=12344;User ID= admin; data source= " & Chemin
    Je code en VBA
    Merci à vous

    •  11 місяців тому +1

      Bonjour. Il est probable qu'une session ait mal été terminée expliquant ce message d'Access. Je vous suggère de couper toutes les instances d'Access ouvertes avec le gestionnaire de tâche et de recommencer.

    • @homelearning547
      @homelearning547 11 місяців тому

      @ merci pour la réponse. J'ai suivi à la lettre vos recommandations mais hélas, le même message: "impossible de démarrer l'application. Le fichier d'informations du groupe de travail est absent ou ouvert en mode exclusif par un autre utilisateur."

    •  11 місяців тому

      @@homelearning547 S'agit-il d'une base partagée ? Vous parlez de groupe de travail.

    • @homelearning547
      @homelearning547 11 місяців тому

      @ non... C'est une base non partagée mais c'est le message que j'ai reçu lors du débogage

    • @barto107simpsons6
      @barto107simpsons6 11 місяців тому

      et avez-vous essayé de réparer la base en passant par le menu Outils de base de données et le bouton Compacter et réparer la base de données ?@@homelearning547