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 :

Zone de liste à préciser avec Selected [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut Zone de liste à préciser avec Selected
    Salut.

    J'ai 2 formulaires, alimentés chacun par 1 requête, qui affichent le cumul des produits vendus, respectivement, mensuellement et annuellement. Pour ce faire, j'ai 2 listes sur le premier (année et mois) et 1 sur le second (année).

    Pour le filtrage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "rptProductsMonthly", acViewPreview, "qry_PrintOrder", "[InYear]=[Forms]![frmProductsTerm]![lstYear] AND [InMonth]=[Forms]![frmProductsTerm]![lstMonth]"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "rptProductsAnnual", acViewPreview, "qry_PrintOrder", "[InYear]=[Forms]![frmProductsTerm]![lstYear]"
    Je cherche à n'utiliser qu'un seul formulaire, dans un esprit pratique mais je bute sur "Selected" que je ne sais pas comment utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub cmdView_Click()
     
        Dim strNomDoc As String
     
        If Me.lstMonth.Selected() = True Then
            DoCmd.OpenReport "rptProductsMonthly", acViewPreview, "qry_PrintOrder", "[InYear]=[Forms]![frmProductsTerm]![lstYear] AND [InMonth]=[Forms]![frmProductsTerm]![lstMonth]"
        Else
            DoCmd.OpenReport "rptProductsAnnual", acViewPreview, "qry_PrintOrder", "[InYear]=[Forms]![frmProductsTerm]![lstYear]"
        End If
     
    End Sub
    Je sais qu'il faut mettre quelque chose entre parenthèses (si je mets un chiffre, ça ne fait que correspondre au numéro de ligne dans ma liste mensuelle, entre 0 et 11) mais j'ignore quoi.

    Merci.

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Si tu décrivais ton besoin (le comportement que tu veux reproduire) et non ce que tu as tenté ?

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    - Si je sélectionne uniquement l'année, il faut qu'il m'affiche les produits cumulés pour l'année choisie (ça, ça marche).
    - Si je sélectionne l'année et le mois, il faut qu'il m'affiche les produits cumulés pour le mois et l'année choisis.

    Et puis tant qu'à faire, si je sélectionne uniquement le mois (ou rien du tout), il faudrait afficher un message indiquant que je dois sélectionner une année, ou une année et un mois. Ou alors, placer un code sur ouverture du formulaire pour que la première année de la liste soit sélectionnée.

    Merci.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Il faut tester la nullité des combos.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if not isnull(me.cbannee) then
       docmd.openreport "reportAnnuel"...
    else
       docmd.openreport "reportMensuel"...
    endif
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    J'ai dû faire une erreur quelque part parce que ça ne fonctionne qu'à moitié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub cmdView_Click()
     
        Dim strNomDoc As String
     
        If Not IsNull(Me.lstYear) Then
            DoCmd.OpenReport "rptProductsAnnual", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear]"
        Else
            DoCmd.OpenReport "rptProductsMonthly", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear] AND [InMonth]=[Forms]![frmProductsTerms]![lstMonth]"
        End If
     
    End Sub
    Que je sélectionne une année ou une année et un mois, je n'ai que le cumul annuel qui s'affiche (rptProductsAnnual).
    Si j'inverse les arguments et les lignes, je n'ai alors que le mois sélectionné qui s'affiche (rptProductsMonthly).

    J'ai essayé plusieurs combinaisons, de rajouter un ElseIf, d'utiliser IsNull à la place de Not IsNull, etc, mais sans succès.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Ton test ne correspond pas à ton utilisation.

    Dans les 2 reports tu utilises l'année et tu fait justement le test de l'année.
    C'est le mois qu'il faut tester.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Not IsNull(Me.lstMonth) Then
            DoCmd.OpenReport "rptProductsAnnual", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear]"
        Else
            DoCmd.OpenReport "rptProductsMonthly", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear] AND [InMonth]=[Forms]![frmProductsTerms]![lstMonth]"
        End If
    N'est-il pas ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Non, il n'est pas.

    Si j'ai bien compris :

    If Not IsNull(Me.lstMonth) Then -> Si la liste lstMonth n'est pas nulle, donc si il y a un mois de sélectionné, le rapport rptProductsMonthly doit s'ouvrir, c'est-à-dire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "rptProductsMonthly", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear] AND [InMonth]=[Forms]![frmProductsTerms]![lstMonth]"
    Et dans le cas contraire, si lstMonth est nulle, ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "rptProductsAnnual", acViewPreview, "[InYear]=[Forms]![frmProductsTerms]![lstYear]"
    J'ai essayé les quatre combinaisons, pour chaque, il n'y a qu'une des deux conditions qui fonctionne (celle qui ne fonctionne pas, selon le cas, affiche l'état comme si on le lançait directement, non filtré).

    Pour information, chaque état est tiré de sa propre requête.

  8. #8
    Membre régulier Avatar de Nerva
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Points : 94
    Points
    94
    Par défaut
    Ca fonctionne finalement. J'avais oublié acNormal dans chaque ligne d'ouverture d'état et le filtre pour les mois ne marchait pas (pour l'année, j'aurais eu du mal à le voir puisque dans cette base, il n'y en a qu'une)...

    Merci.

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

Discussions similaires

  1. Remplir une zone de liste Excel avec une requête Access (problème)
    Par Tontorise dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 30/05/2007, 14h26
  2. liste déroulante avec selected
    Par vanou dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2007, 22h25
  3. Réponses: 45
    Dernier message: 06/03/2007, 16h30
  4. Zone de liste deroulante avec preselection précise
    Par dynexd dans le forum Access
    Réponses: 7
    Dernier message: 20/02/2006, 17h25
  5. Réponses: 5
    Dernier message: 06/09/2005, 02h50

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