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

VBA Access Discussion :

DoCmd.FindRecord acSearchAll ne revient pas au début de la table


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Femme Profil pro
    Secrétaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut DoCmd.FindRecord acSearchAll ne revient pas au début de la table
    Bonjour à tous,

    Après plusieurs heures de recherche, je me tourne vers vous pour vous appeler à l'aide :
    Je suis dans un formulaire access et je souhaite rechercher des enregistrements avec la fonction ci-après déclenchée par un bouton de commande :
    DoCmd.FindRecord "*" & TXT_SEARCH.Value & "*", , , acSearchAll, , , False (TXT_SEARCH étant une zone de texte où je tape la valeur pour ma recherche)

    Nom : Sprite 7.jpg
Affichages : 200
Taille : 20,8 Ko

    Elle fonctionne bien mais je souhaiterais revenir au début des enregistrements lorsque ma recherche a atteint la fin de la table pour aller jusqu'à l'enregistrement d'où je suis partie initialement. Sur l'aide microsoft, c'est ce que la clause acSearchAll est sensée faire mais en fait, elle s'arrête à la fin de la table et ne revient pas au début. Cela réagit exactement pareil que si j'avais mis "acDown".

    Si je cherche "martin" par exemple et que je suis sur l'enregistrement n° 4, la fonction va bien trouver l'enregistrement n°6 mais ne reviendra pas au début pour afficher l'enregistrement n° 2

    Est ce que quelqu'un a une explication à ce phénomène et pourrait m'apporter une aide précieuse dont j'ai vraiment besoin ?

    Je vous en remercie par avance.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Si je cherche "martin" par exemple et que je suis sur l'enregistrement n° 4, la fonction va bien trouver l'enregistrement n°6 mais ne reviendra pas au début pour afficher l'enregistrement n° 2

    Est ce que quelqu'un a une explication à ce phénomène et pourrait m'apporter une aide précieuse dont j'ai vraiment besoin ?
    pour moi, ce n'est pas un comportement anormal: dans l'aide il est indiqué que acSearchAll effectue la recherche dans tous les enregistrements mais il n'est pas indiqué que cela fait revenir au début, d'ailleurs, la commande "Rechercher" dans la barre des boutons de déplacement fonctionne aussi comme cela.

    Nom : _0.JPG
Affichages : 164
Taille : 13,2 Ko

    Si tu veux que cela boucle, il faut passer par du code.
    Voici un exemple de code qui n'indique pas à quel enregistrement commence la recherche mais revient bien au début de la table quand la fin est atteinte mais la recherche boucle infiniment:
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Option Compare Database: Option Explicit
    ' déclaration variable n° d'enregistrement en cours à mettre au tout début du code du formulaire
    Public lCurrentRecord As Long
    code du bouton
    Code VBA : 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
    Private Sub btnChercher_Click()
    Dim vCherche As Variant
    vCherche = Nz(Me.txtRecherche, "*")
    ' on vide le champ de recherche 
    Me.txtRecherche = ""
    ' se positionne sur le premier champ de recherche
    Me.Adresse.SetFocus
     
    ' mémorisation du n° d'enregistrement 
    lCurrentRecord = Me.CurrentRecord
     
    DoCmd.FindRecord "*" & vCherche & "*", , , acSearchAll, , , False
     
    ' si la recherche n'a pas abouti, on retourne au début de la table
    If Me.CurrentRecord = lCurrentRecord Then
        DoCmd.GoToRecord acDataForm, Me.Name, acFirst
        DoCmd.FindRecord "*" & vCherche & "*", , , acSearchAll, , , False
    End If
     
    ' on restaure le champ de recherche
    Me.txtRecherche = vCherche
    End Sub
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Jolie réponse, Tee_grandBois
    "Always look at the bright side of life." Monty Python.

  4. #4
    Candidat au Club
    Femme Profil pro
    Secrétaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Merci beaucoup pour la réponse tee_grandbois . Je vais m'empressée de la tester.

    Voici le lien de l'aide microsoft qui indiquait le retour au début de acSearchAll : https://support.office.com/fr-fr/art...7-ea71949f39cd
    C'est dans la rubrique "Sens".

    Merci encore pour la réponse. Je reviens vers vous pour dire le résultat.

    Bonne journée

  5. #5
    Candidat au Club
    Femme Profil pro
    Secrétaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Ca marche impeccable. Merci infiniment. Maintenant, je vais décortiquer pour comprendre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le movefirst qui revient pas au début
    Par zooffy dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/06/2017, 16h15
  2. IE ne revient pas à la ligne
    Par Amallric dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/12/2008, 23h06
  3. erreur 13 - DoCmd.FindRecord
    Par frmaniako dans le forum VBA Access
    Réponses: 0
    Dernier message: 09/04/2008, 17h26
  4. Réponses: 3
    Dernier message: 29/10/2007, 16h49
  5. Utilisation de DoCmd.FindRecord
    Par garsflo dans le forum VBA Access
    Réponses: 2
    Dernier message: 21/08/2007, 18h54

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