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 :

[VBA]Compter les enregistrement suivant critère d'un champs


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 63
    Points : 43
    Points
    43
    Par défaut [VBA]Compter les enregistrement suivant critère d'un champs
    Bonsoir à toutes et tous

    Débutant avec access, je cherche comment compter le nombre d'enregistrement d'une table répondant a un critère d'un champs de cette même table

    Comment doit-je faire ?

    En vous remerciant d' avance

    Alain

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir et Bienvenue;

    Tu peux utiliser une fonction de domaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"TaTable";"[TonChamp]='TonCritère'")
    Attention aux variantes selon texte ou numérique
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Bonsoir francishop

    Merci de te penché sur mon problème mais je doit surement m'y prendre mal car cela marche pas
    J' utilise Access 2007 et la valeur cherchée doit apparaite dans un champs texte d'un formulaire.
    Ou doij-je mettre le code, dans créé expression ou pas ?

  4. #4
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Bonsoir,

    Tu places le code proposé dans la propriété Source contrôle de ta zone de texte.

    Bon courage et @+
    La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici nous avons réuni théorie et pratique: Rien ne fonctionne ... et personne ne sait pourquoi!
    Albert Einstein

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Bonsoir Mahefasoa, RE le forum

    Mercis a toi mais cela ne marche pas, en mode formulaire, mon champs texte affiche "#Erreur".
    J'explique

    J'ai une table 1 avec les champs "Nom","Prénom","Copain", ect....
    Dans une autre table 2, la table"Copain", les champs "Moi","Toi","Lui","Elle",Ect..

    Je voudrais dans un formulaire, avoir des champs texte qui m"affiche comme etiquette :"Moi" et dans le champs, la somme des champs "nom" de la table 1 qui on la valeur "Moi" de la table 2 dans le champs copain de la table 1 et ainsi de suite pour "Toi" "Elle" Ect...

    J'espère avoir été assez clair dans mon explication

    Cordialement

    Alain

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour;
    Citation Envoyé par wachoo31
    Mercis a toi mais cela ne marche pas, en mode formulaire, mon champs texte affiche "#Erreur".
    Ceci est anormal. Tu créé un formulaire vierge. Tu y "colles" un champ avec pour source un des exemples.

    C'est parti pour les fonctions de domaines!

    Chaque fonction de domaine comprend 3 arguments sous forme :
    FonctionDeDomaine(expression;Table_ou_Requête;Filtre)
    .-Expression = valeur à traiter-->En général un nom de champ entre crochets. Mais il peut aussi s'agir d'autres fonctions VBA
    .-Table_ou_Requête
    .-Filtre--> optionnel permet de sélectionner avant d'appliquer le calcul.

    Ici on ne va pas faire dans le détail. On va compter la table entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"tbl_CoefVendu")
    La "même en couleur", mais cette fois j'indique un champ texte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[Annee]";"tbl_CoefVendu")
    La "même en couleur", mais cette fois j'indique un champ numérique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("[N°]";"tbl_CoefVendu")
    On note aucun changement . On encadre de guillemets l'expression

    Il en va autrement pour le filtre selon Texte,Numérique,date
    Quelques exemples. A toi de voir la différence.

    Texte(Attention-->Ici 1980 est sous forme Texte..)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"tbl_CoefVendu";"Annee='1980'")
    Numérique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"tbl_CoefVendu";"IndiceHop>3")
    Date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"tbl_CoefVendu";"Annee2>#01/01/1995#")
    A toi de remplacer la table et les champs. Mais quoi qu'il arrive tu dois obtenir le résultat en partant d'un formulaire sans source ou avec source.

    Ceci est une première étape... qui te servira certainement... En dernier!

    Je n'ai pas tout compris à ta demande, mais il me semble qu'il va falloir décomposer dans une requête pour un premier résultat. Puis procéder à quelque regroupement.

    Mon incompréhension provient, en partie, du fait qu'il me semble qu'il y a mélange dans ton descriptif entre colonne et champ de table.
    :"Moi" et dans le champs, la somme des champs "nom" de la table 1 qui on la valeur "Moi" de la table 2 dans le champs copain de la table 1 et ainsi de suite pour "Toi" "Elle" Ect...
    Cordialement

    Ps: Tu peux faire une recherche dans la faq sur les fonctions de domaine
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Re Bonsoir à toi francishop,

    Vraiment sympa de te penché sur mon problème, je débute avec acces et encore beaucoups d'inconnues pour moi

    J'ai bien suivi t'es explications, je crois mais sa marche pas

    Je me permet de joindre une petite base en exemples pour mieux expliquer mon soucis, enfin je crois que comme cela tu comprendra mon charabia.....

    Encore un grand merci à toi
    Fichiers attachés Fichiers attachés

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour;

    Voilà, ce champs devrait indiqué la valeur 2 vu que dans la table 1 il y a 2 enregistrement
    avec la valeur "Moi" et il me donne #erreur ?
    C'est gentil de faire cette précision dans une étiquette de ton envoi. Mais il faut éviter fond noir avec police idem.. On a du mal à voir!

    Tu fais une recherche sur une liste de choix avec 2 colonnes dont une masquée
    Access ne tient compte que de la première colonne. Et ta première colonne c'est du numérique. Dans les requêtes on ne peut, comme dans VBA, préciser .Column(1). Ce qui indique : Ne prends pas la première colonne(0) mais la suivante.
    C'est pourquoi tu fais une requête genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table1.N°, Table1.Nom, Table1.Prénom, Table2.Copain, Table2.N° AS NumTypeCopain
    FROM Table2 INNER JOIN Table1 ON Table2.N° = Table1.Copain;
    Et à partir de là tu travailles directement sur le champ qui t'intéresses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"Qry_Copain";"Copain='Moi'")
    Ce qui est le même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =CpteDom("*";"Qry_Copain";"NumTypeCopain=1")
    Mais on ne travaille pas la même colonne.
    Pour faciliter ton travail tu peux même faire un formulaire avec source cette requête. Puis tu fais les comptes, additions, cumul etc dans le pied de ton formulaire.

    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 63
    Points : 43
    Points
    43
    Par défaut
    Bonsoir francishop,

    Oups j'ai trouvé....

    Effectivement francishop, mon problème était que je cherchais le nom et que il me fallais mettre son numéro.

    Grace a t'es explicartions, je vais encore évolué

    Merci a toi et bon week-end

    Alain

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour;

    Juste une précision. Les fonctions de domaine sont puissantes. La contrepartie est qu'elles sont "gourmandes" en ressources et peu véloces. On privilégie les requêtes de regroupement lorsque celà est possible.

    Cordialement.

    Ps : N'oublie pas le tag résolu.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/03/2007, 09h56
  2. [VBA]Compter les cellules selon leurs couleurs...
    Par ronron1978 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/01/2006, 15h27
  3. Compter les enregistrements formulaire
    Par mat44_39 dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2005, 12h21
  4. Compter les enregistrements modifiés
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/10/2004, 14h12
  5. [VB.NET] Compter les enregistrements d'une requete
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/10/2004, 18h46

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