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 :

Filtrer un formulaire avec une variable [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut Filtrer un formulaire avec une variable
    Bonsoir

    Je fais de nouveau appel à vous pour un petit problème

    Je cherche à filtrer un formulaire à partir d'une variable

    Quand je le fais "à la main" dans les propriétés du formulaire avec un critère du type
    NuméroAffaire = "2009001" , tout fonctionne bien

    Quand j'efface les propriétés et passe par un bouton avec le code suivant, cela ne fonctionne plus

    Private Sub Commande11_Click()
    Dim StrAffEnCours As String
    StrAffEnCours = InputBox("Saisie Num affaire", "Quelle affaire ?")
    'MsgBox ("l'affaire en cours est " & StrAffEnCours)
    DoCmd.OpenForm "FAffetLocetMAt"
    Me.Filter = "NuméroAffaire = 'StrAffEnCours'"
    Me.FilterOn = True
    End Sub
    Voyez vous où cela pèche ?

    Merci pour votre aide

    Daniel

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Commande11_Click()
    Dim StrAffEnCours As String
    StrAffEnCours = InputBox("Saisie Num affaire", "Quelle affaire ?")
    'MsgBox ("l'affaire en cours est " & StrAffEnCours)
    DoCmd.OpenForm "FAffetLocetMAt",,,"NuméroAffaire = """ & strAffEnCours & """" :'StrAffEncour est une variable si tu la met dans une chaîne de caractère elle n'est pas reconnue et donc pas interprétée.
     
    'Me.Filter = "NuméroAffaire = 'StrAffEnCours'" (à supprimer, me. se réfère au formulaire courrant celui qui a le bouton Commande11)
    'Me.FilterOn = True (à supprimer, me. se réfère au formulaire courrant celui qui a le bouton Commande11)
    End Sub
    Note de style :

    * Évite les accents et les espaces dans les noms internes de tes objets tu te simplifiera grandement la vie.

    * Remplace les noms automatiques automatiques créés par Access par des noms plus significatifs.

    Ici : Commande11 ça ne dit absolument rien et il faut lire le code pour savoir ce que cela fait, btnOuvreFormAffaire, par exemple, me semble bien représenter à quoi sert ce bouton et te premets de savoir immédiatement ce que fait ton bouton sans avoir à lire toutes les lignes.

    * Et, si ce n'est fait en mode modification de code va dans Option/Éditeur et coches 'Déclaration de variables obligatoires'.

    A+

  3. #3
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    C'est normal car Me concerne le formulaire courant donc pas le formulaire "FAffetLocetMAt"
    on peut aussi ouvrir le formulaire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm "FAffetLocetMA",,,"NuméroAffaire = 'StrAffEnCours'"

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Bonsoir

    Merci à tous les deux pour des informations

    Hélas, j'ai mis le code à jour

    Private Sub BoutonChoixAffaire_Click()
    Dim StrAffEnCours As String
    StrAffEnCours = InputBox("Saisie Num affaire", "Quelle affaire ?")
    MsgBox ("l'affaire en cours est " & StrAffEnCours)
    DoCmd.OpenForm "FAffetLocetMAT", , , "NuméroAffaire = 'StrAffEnCours'"

    End Sub
    Mais quand le formulaire s'ouvre, il ne s'ouvre pas sur le numéro d'affaire en cours mais sur un enregistrement vide ....

    Merci pour ton aide

    Daniel

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonsoir,
    tel que tu l'as écris, familledeacp, ton formulaire va chercher l'enregistrement pour lequel NumAffaire='StrAffEncours' et non la valeur contenue dans la variable StrAffEnCours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub BoutonChoixAffaire_Click()
     Dim StrAffEnCours As String
     StrAffEnCours = InputBox("Saisie Num affaire", "Quelle affaire ?")
     MsgBox ("l'affaire en cours est " & StrAffEnCours)
     DoCmd.OpenForm "FAffetLocetMAT", , , "NuméroAffaire = '" & StrAffEnCours & "'"
    End Sub

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Bonsoir Ilank

    Merci pour ce complément de réponse

    Génial ! ca marche

    Maintenant, je poursuis mes recherches

    Plutot que de taper manuellement mon nom d'affaire, je vais essayer
    - d'ouvrir un formulaire avec une liste déroulante de mes affaires
    - récupérer en fonction du nom de l'affaire son numéro (qui deviendra StrAffEnCours)

    A bientot

    Daniel

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Re bonsoir

    J'ai donc créé sur mon formulaire affaires un nouveau bouton

    Private Sub BoutonAccesMatDepuisListeAff_Click()
    DoCmd.OpenForm "FAffetLocetMAT", , , "NuméroAffaire = Me![NuméroAffaire]"
    End Sub
    Lors du clic, une fenetre me demande d'enter le paramètre pour Me![NuméroAffaire]

    Ce champ NuméroAffaire existe bien sur le formulaire d'où je pars

    Je continue de chercher ; sûrement un problème de syntaxe et de ' ou de "

    A bientot

    Daniel

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Oui,
    Pourquoi ne pas placer directement cette liste déroulante dans le formulaire que tu cherches à filtrer ? De manière à pouvoir consulter directement une affaire sans devoir sortir du formulaire et la sélectionner dans l'autre.
    Tu peux :
    1) Créer un formulaire en mode continu présentant la collection des affaires consultables.
    2) Créer un formulaire présentant les détails de l'affaire sélectionnée à partir du formulaire précédent. C'est dans ce formulaire que tu placeras la liste déroulante permettant de consulter une autre fiche sans changer de formulaire.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Points : 71
    Points
    71
    Par défaut
    Merci Ilank pour ces éléments de réflexion

    De mon côté, j'ai repris les réponses précédentes et en faisant quelques essais, j'ai trouvé une solution :

    Private Sub BoutonAccesMatDepuisListeAff_Click()
    DoCmd.OpenForm "FAffetLocetMAT", , , "NuméroAffaire = '" & Me![NuméroAffaire] & "'"
    End Sub

    Encore Merci à tous !

    Daniel

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

Discussions similaires

  1. Filtrer un formulaire avec une zone de texte
    Par shadrac dans le forum IHM
    Réponses: 3
    Dernier message: 09/04/2015, 21h23
  2. Modifier la source d'un sous-formulaire avec une variable
    Par jslagier dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/10/2007, 10h50
  3. Réponses: 2
    Dernier message: 29/11/2006, 14h49
  4. Filtrer une requete avec une variable array
    Par hugo69 dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/11/2005, 14h33
  5. Execution formulaire avec une variable
    Par dsj dans le forum Access
    Réponses: 9
    Dernier message: 08/09/2005, 19h46

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