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 :

FindFirst avec critère booléen


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de Le Sage
    Homme Profil pro
    Formateur Conseil en Bureautique et CMS, Développeur VBA, Power Query, Power Pivot
    Inscrit en
    Novembre 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur Conseil en Bureautique et CMS, Développeur VBA, Power Query, Power Pivot
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2009
    Messages : 210
    Points : 171
    Points
    171
    Par défaut FindFirst avec critère booléen
    Bonjour à toutes et tous !

    Je suis en train de me rendre dingue sur la syntaxe du critère destiné à retrouver un enregistrement dont la case d'un champ Vrai/Faux est cochée.

    De base, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    strCritereSuppressionMarquees = "[" & strTableTempNomChampSupprimerPj & "] = -1"   ' => Ne trouve rien
    strCritereSuppressionMarquees = "[" & strTableTempNomChampSupprimerPj & "] = True"   ' => Ne trouve rien
    strCritereSuppressionMarquees = "[" & strTableTempNomChampSupprimerPj & "] = '-1'"   ' => Incompatibilité de type
    strCritereSuppressionMarquees = "[" & strTableTempNomChampSupprimerPj & "] = Vrai"   ' => Erreur 3070 : Le moteur... Ne reconnaît pas "Vrai" ...
    strCritereSuppressionMarquees = "[" & strTableTempNomChampSupprimerPj & "] = " & CInt(True)   ' => Ne trouve rien


    Merci d'avance à quiconque pourra me sortir de là, parce que je suis à la bourre et bloqué par ce truc totalement débile !!!
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait. (Mark TWAIN)

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Les deux premières sont bonnes :

    .FindFirst(MonChampBooleen=True)
    .FindFirst(MonChampBooleen=-1)

    ou plus simplement

    .FindFirst(MonChampBooleen)

    Si cela ne retourne rien, c'est qu'aucune donnée ne correspond. Le Recordset est bien ouvert en mode Dynaset ?

  3. #3
    Membre habitué Avatar de Le Sage
    Homme Profil pro
    Formateur Conseil en Bureautique et CMS, Développeur VBA, Power Query, Power Pivot
    Inscrit en
    Novembre 2009
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur Conseil en Bureautique et CMS, Développeur VBA, Power Query, Power Pivot
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2009
    Messages : 210
    Points : 171
    Points
    171
    Par défaut
    Bonjour Tofalu et merci pour tes réponses toujours aussi rapides et efficaces !

    Alors effectivement, les premières sont bonnes.

    Et oui, j'ai bien ouvert mon Recordset en dynaset...

    Je vais brièvement exposer le contexte pour que chacun puisse profiter de mon erreur :

    J'ouvre un formulaire lié à une table.
    Chaque enregistrement dispose d'une case à cocher "Supprimer"
    L'appui sur le bouton "Valider" du formulaire doit, entre autres choses, supprimer les enregistrements pour lesquels la case est cochée.

    Cela ne fonctionnait pas, non pas à cause du critère de mon FindFirst cité plus haut, mais parce que la table ne se réactualisait pas lorsque je cochais la case !

    La solution : ma case à cocher s'appelant chkSupprimer (très original !) :
    Private Sub chkSupprimer_AfterUpdate()
    Me.Requery
    End Sub
    ce qui a pour effet non pas de raffraîchir le formulaire, mais de le synchroniser avec sa source. La dernière modification de la case à cocher ayant eu lieu dans le formulaire, la table se met à jour, et tout fonctionne !

    Donc merci encore Tofalu de m'avoir obligé à regarder ailleurs que là d'où semblait venir le problème, et d'autre part d'avoir répondu à la question initiale.

    Ils ne savaient pas que c'était impossible, alors ils l'ont fait. (Mark TWAIN)

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

Discussions similaires

  1. [AC-2010] FindFirst avec 2 critères (lieu et date)
    Par Guy FALESSE dans le forum IHM
    Réponses: 12
    Dernier message: 13/06/2013, 20h03
  2. Réponses: 3
    Dernier message: 02/01/2012, 17h59
  3. Problème Findfirst avec un tiret dans le critère
    Par Mors_Ubyte dans le forum VBA Access
    Réponses: 6
    Dernier message: 14/10/2008, 11h14
  4. [DOM] Récupération d'un noeud avec critères ?
    Par elitost dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/10/2005, 15h27
  5. [Excel] Selection multiple avec critères
    Par tibotibotibo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/04/2005, 10h48

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