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 :

Afficher des résultats en fonction d'une valeur de liste


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut Afficher des résultats en fonction d'une valeur de liste
    Bonjour,

    Je vais essayer d'être clair mais je le garantie pas, voilà:

    Dans un formulaire de ma BD, je presse sur un bouton et cela affiche une inputbox, dans cette inputbox on peut écrire une année, puis cela ouvre un autre formulaire, qui va rechercher une table en fonction de l'année que l'on a introduit dans l'inputbox.
    Ensuite le formulaire calcul la somme des enregistrements de tous les champs de la table et les affiche dans ses zones textes.
    De plus dans ce formulaire, j'ai des listbox qui contiennent des valeurs en rapport avec les enregistrements de la table.

    J'aimerais pouvoir en séléctionnant certaines valeurs dans les listbox que quand le formulaire effectue la somme des enregistrements de la table, que mon formulaire ne prenne en compte que les enregistrements qui correspondent avec les valeurs séléctionnées dans les listbox. Mais comment faire!??

    J'espère avoir été clair sinon:

    Disons que dans ma table j'ai différent champ et certains champs sont des listbox:

    Disons que ce sont les noms de mes champs:
    Nom Prix Ville Chef Secteur

    quand mon formulaire fait le calcul il prend toutes les valeurs du champ "Prix"
    et les additionne, puis les affiche dans un de ces textbox.

    Ensuite dans ma table, le champ secteur est en fait une listbox.
    J'aimerais que quand je séléctionne une certaine valeur dans le champ "secteur", mon formulaire ne prenne que certaines valeurs de "Prix" pour faire l'addition.

    Secteur = bureau
    Formulaire calcul que les enregistrement qui ont la valeur bureau dans secteur

    secteur = nettoyage
    Formulaire calcul que les enregistrement qui ont la valeur nettoyage dans secteur

    Voilà j'espère que c plus clair pour vous et surtout que vous pourrez m'aider!

    Merci d'avance!

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    En fait, j'ai peut-être encore plus simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set recordset = db.OpenRecordset("Matable") Where "nom champ" = condition de la liste and "nom champ 2" = condition liste2
    etc...

    est-ce possible?

    comme ca après je peux simplement lire dans mon recordset

    Merci

  3. #3
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    j'ai du mal à lire tes explications... (fin de journée qui approche ??)

    une proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set recordset = db.OpenRecordset("SELECT * FROM Matable Where nom champ = " & condition_de_la_liste & " and nom champ 2 = " & condition liste2 )

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Ca doit être ca oui je pense que je me serais mieux expliquer ce matin... lol

    Enfin je te remercie, je vais essayer et voir ce que ca donne!

    Mais c'est pas obligatoire d'avoir du ADO pour ca? car je travaille avec DAO et j'ai commencé à lire des tutoriels de ADO car apparemment ADO est encore plus puissant mais voilà...

    Merci

  5. #5
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Dans ce cas là : mieux vaut utiliser DAO

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Hello,

    Alors j'ai essayé de placer cette requête sql pour récupérer mon recordset!

    ca donne ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sRs = sDb.OpenRecordset("SELECT * FROM [Abfrage Mittelfristplanung alle Felder] WHERE [Division_Bereich] = " & Me.Division_Bereich.Value & " AND [Projektreichweite] = " & Me.Projektreichweite.Value & " AND [Domäne] = " & Me.Domäne.Value & " AND [OE_Techn_Projektleiter] = " & Me.OE_Techn_Projektleiter.Value & "") ' AND 'IT Team' = " & Me.IT_Team.Value & "
    Maintenant le prob c'est que il me fait une erreur...
    il dit qu'il attend 5 paramètres mais qu'il y en a pas assez qui sont donnés

    Je sais pas si tu vois une erreur la dedans!? dsl mais je suis pas très câlé en SQL...

    Merci d'avance!

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    La fin est en commentaire, car c'est ma listbox IT Team qui n'est encore pas au point

  8. #8
    Membre averti
    Inscrit en
    Août 2007
    Messages
    360
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 360
    Points : 396
    Points
    396
    Par défaut
    Bonjour,

    Je serais toi j'essaierais de faire cette requête par l'analyseur de requetes d'abord et de l'inserer après dans ton code.

  9. #9
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Bonjour,

    A propos de tes 5 parametres manquants :

    Si tes valeurs sont de type alpha tu dois inclure des Quotes au niveau de chacun de tes criteres dans la clause WHERE

    exemple sur une partie de ta requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sRs = sDb.OpenRecordset("SELECT * FROM [Abfrage Mittelfristplanung alle Felder] WHERE [Division_Bereich] = '" & Me.Division_Bereich.Value & "' AND [Projektreichweite] = '" & Me.Projektreichweite.Value & "' AND [Domäne] = '" & Me.Domäne.Value & "' AND ....
    A+

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Merci beaucoup pour vos réponses!
    Je ne savais pas que ca existait ce testeur de requête ou je peux le trouver!?
    merci!

    Sinon ct bien ces quotes qui manquaient! dsl... je ne connais pas bien sql... peut-être connais-tu un bon tutoriel!?
    en tout cas merci!

    J'aurais encore une question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set sRs = sDb.OpenRecordset("SELECT * FROM [Abfrage Mittelfristplanung alle Felder] WHERE [Division_Bereich] = '" & Me.Division_Bereich.Value & "'
    .......
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND '" & DatePart(yyyy, "[Datum_Projektstart]") & "' < '" & Me.Jahr.Value & "' AND '" & DatePart(yyyy, "[Datum_Projektende]") & "' > '" & Me.Jahr.Value & "'")
    Tout ce qui est en italique c'est ok, ensuite j'ai mis des ... pour pas ravoir tout le bout de code et ca c'est la fin et c'est là qu'est le prob...

    J'aimerais en fait prendre avec la fonction "DatePart" la valeur de l'année du champ "Datum_Projektstart" et la comparer avec Me.Jahr.Value et tout ca dans ma requête SQL...

    Si vous pouvez m'aider ca serait magnifique!!!!

    Merci beaucoup en tout cas!!

  11. #11
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Un petit complément quant à l'utilisation des Quotes.

    Dans mon message précedent, je t'avais préconisé l'utilisation de quote mais seulement si la valeur du critère est Alphabétique, sinon tu ne met pas de quote.

    Donc dans ta comparaison entre l'année du projet et l'annee en cours , il s'agit de numérique donc pas de quote.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND " & DatePart(""yyyy"", [Datum_Projektstart]) & " < " & Me.Jahr.Value & " AND " & DatePart(""yyyy"", [Datum_Projektende]) & " > " & Me.Jahr.Value)
    Remarque qu'il a fallu doubler les guillemets de l'argument "yyyy"

    Excuses moi, j'aurai du etre plus précis

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    Bonjour,

    Merci pour ton aide Jeannot! donc j'ai essayer, mais pour finir j'ai opter pour un test plus efficace ensuite, ca fonctionne très bien aussi!

    Maintenant en fait j'aurais un autre problème, j'aimerais pouvoir gérer des champ vide...

    Je m'explique:

    Dans mon set recordset il y a la listbox "Domäne" et pour certains enregistrement, cette option n'est pas rempli donc: enregistrement = ""

    Seulement le prob c'est que quand je laisse la liste box vide, donc = "" le prog me fait une erreur et me dis que c'est pas possible de traiter la valeur Null...

    J'aimerais pouvoir traiter cette valeur (Null) quand même, mais comment faire!?

    Merci beaucoup!

  13. #13
    Membre régulier Avatar de Dryss51
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 91
    Points
    91
    Par défaut
    Bonjour,

    La Fonction nz() te permettra de traité des valeurs si null.
    En espérant t'aider
    http://www.developpez.com
    ça décoiffe !! Suffit de regarder

    $Dryss$

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 76
    Points : 49
    Points
    49
    Par défaut
    C'est nickel, j'ai essayé avec nz() et ca fonctionne bien!

    Merci de votre aide, ca fait plaisir!!!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/04/2011, 06h06
  2. [XL-2003] Répéter des données en fonction d'une valeur
    Par Korsa dans le forum Excel
    Réponses: 3
    Dernier message: 31/03/2011, 10h32
  3. Afficher des informations en fonction d'une zone précédement saisie
    Par ybezier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/12/2010, 10h01
  4. [XL-2007] Extraire des lignes en fonction d'une valeur de cellule dans un autre fichier
    Par MisterTambo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/08/2009, 10h42
  5. Réponses: 15
    Dernier message: 31/03/2009, 22h22

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