IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Superbe recherche et mise en valeur des résultats


Sujet :

Contribuez

  1. #1
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut Superbe recherche et mise en valeur des résultats
    Bonjour,

    Je ne sais pas si quelqu'un a déjà signalé ce nouveau cadeau d'Allen Browne (encore un ), mais, à l'occasion d'une question pour reproduire le mode de recherche d'Access 2007 (Simuler les boutons de déplacement en VBA), j'ai pu donner ce lien :
    Si tu es prêt à faire quelque chose d'un peu compliqué, et si ton formulaire peut être affiché en vue continue, je te conseillerais vivement de faire beaucoup mieux que ça.
    Sur le site d'Allen Browne, tu trouveras un exemple permettant :
    - de filtrer les enregistrements qui contiennent le texte recherché (ça, on sait déjà faire),
    - d'afficher d'un coup toutes les occurrences de ce texte, dans tous les contrôles recherchés, avec le format de ton choix. Formatage html, donc en gras, surligné, couleur... tout ce que tu veux.
    C'est assez spectaculaire

    http://allenbrowne.com/AppSearchHighlight.html
    L'image montre les résultats en rouge.
    Tu peux télécharger l'exemple et t'en servir.
    Ça peut sûrement servir à d'autres...
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2011
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Hello,

    Le but de la manipulation était de pouvoir effectuer une recherche dans un sous-formulaire en temps réel (càd, on tape une lettre et l'affichage se met à jour) et ensuite on peut cliquer sur un des enregistrements pour pouvoir afficher plus d'informations dans une autre sous-formulaire.
    Dans l'exemple ci-dessous:
    • Suivi est le formulaire principal sur lequel se trouve l'utilsateur
    • cboFind est une listbox comprenant les champs sur lesquels on veut faire une recherche
    • cboText est une zone de texte où l'utilisateur va faire sa recherche
    • SF_List est le 1er sous-formulaire où apparaîtront les résultats synthétiques
    • SF_detail est le 2ème sous-formulaire où apparaîtront les résultats détaillés


    Pour ce qui est de la recherche, dans l'attribut "Change" de txtFind, le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
        Dim strText As String
        Dim lngSelStart As Long
        Dim strField As String
     
        Set frm = Forms![Suivi]![SF_List]
        Set frm2 = Forms![Suivi]![SF_detail]
        strText = Me.txtFind.Text
        lngSelStart = Me.txtFind.SelStart
     
        If frm.Form.Dirty Then
            frm.Form.Dirty = False
        End If
     
        If frm2.Form.Dirty Then
            frm2.Form.Dirty = False
        End If
     
        strField = cboFind.Value
     
        If (strText = vbNullString) Or (strField = vbNullString) Then
            frm.Form.FilterOn = False
            frm2.Form.FilterOn = False
        Else
            frm.Form.Filter = strField & " Like """ & IIf(mbcStartOfField, vbNullString, mstrcWildcardChar) & _
                strText & mstrcWildcardChar & """"
            frm.Form.FilterOn = True
            frm2.Form.Filter = strField & " like """ & IIf(mbcStartOfField, vbNullString, mstrcWildcardChar) & _
                strText & mstrcWildcardChar & """"
            frm2.Form.FilterOn = True
     
        End If
    Il faut penser à déclarer les constantes suivantes en début de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Private Const mbcStartOfField = False
    Private Const mstrcWildcardChar = "*"
    Et pour passer de l'affichage de SF_List à l'affichage détaillé du même enregistrement dans SF_detail, j'ai utilisé le code suivant dans toutes les zones "clickables" de SF_List:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Forms![Suivi]![SF_detail].SetFocus
    DoCmd.GoToRecord , , acGoTo, Me.CurrentRecord
    Images attachées Images attachées  

Discussions similaires

  1. mise en couleur des résultats
    Par adriennoob dans le forum IHM
    Réponses: 6
    Dernier message: 29/01/2009, 18h30
  2. Mise en forme des résultats d'une requête
    Par mhamedbj dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/06/2008, 16h44
  3. Mise en forme des résultats d'une requete
    Par johanlft dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/10/2007, 12h28
  4. Recherche Xptah dans la Valeur des noeuds
    Par guiyomh dans le forum Flash
    Réponses: 4
    Dernier message: 18/04/2007, 16h58
  5. Mise en cache des résultats SQL Server
    Par Ultiny dans le forum Accès aux données
    Réponses: 1
    Dernier message: 17/02/2007, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo