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

Macros et VBA Excel Discussion :

Compter le nombre de valeurs différentes selon un critère


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut Compter le nombre de valeurs différentes selon un critère
    Bonjour à tous,

    Je galère depuis un moment à trouver une fonction qui marche pour compter le nombre de valeurs différentes d'une colonne, selon un facteur présent dans une autre colonne.
    J'ai une fonction qui ne marche plus dès lors qu'il y a plusieurs fois la même valeur (elle me donne des valeurs décimales).

    Sur ma plage G22:G150 de la feuille "Fiche", j'ai différentes espèces de poissons, qui sont observées sur différentes zones (A;B;C;D;E;F) présentes en colonne H.

    La formule que j'ai adapté pour la zone A par exemple est :
    =SOMMEPROD((Fiche!$G$22:$G$150<>"")/NB.SI(Fiche!$G$22:$G$150;Fiche!$G$22:$G$150&"")*(Fiche!$H$22:$H$150="A"))

    J'ai une formule qui fonctionne pour le nombre d'espèces toutes zones confondues, et c'est elle que j'ai adapté :
    =SOMMEPROD((Fiche!G22:G150<>"")/NB.SI(Fiche!G22:G72;Fiche!G22:G150&""))

    Petite précision, il ne me faut pas de formule matricielle, mais le passage par une macro est possible, en tout cas le calcul doit être réalisé de matière directe ou via le passage d'une macro.

    Pensez vous pouvoir m'aider ? J'ai du mal à comprendre exactement le fonctionnement de SOMMEPROD/NBSI dans ce cas...

    Merci d'avance

    Etienne

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Moi je passerai par les formules BD et particuliairement =BDNBVAL()

    F1 te donnera plein d'explication sinon revient nous voir

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour Igloobel et merci beaucoup de votre réponse.
    Je ne connaissais pas la fonction BDNBVAL, et elle me sera sans doute utile dans mon travail mais je ne vois pas comment l'appliquer ici.
    En effet, elle compte les valeurs peu importe si elles sont en double, triple etc. Je ne trouve pas de condition pour compter les valeurs uniques.
    DE plus, le fait que les critères ne soient disponible que sur une plage, cela ne me permet pas de calculer simultanément le nombre d'espèces de la zone A, B, C, D, E et F.

    Je continue néanmoins à fouiner à propos de cette fonction.

    Bien cordialement

    Etienne

  4. #4
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par EAbadie Voir le message
    Bonjour Igloobel et merci beaucoup de votre réponse.
    Je ne connaissais pas la fonction BDNBVAL, et elle me sera sans doute utile dans mon travail mais je ne vois pas comment l'appliquer ici.
    En effet, elle compte les valeurs peu importe si elles sont en double, triple etc. Je ne trouve pas de condition pour compter les valeurs uniques.
    DE plus, le fait que les critères ne soient disponible que sur une plage, cela ne me permet pas de calculer simultanément le nombre d'espèces de la zone A, B, C, D, E et F.

    Je continue néanmoins à fouiner à propos de cette fonction.

    Bien cordialement

    Etienne
    Peux tu envoyé un fichier exemple sans données sensible et des catures écrans pour ceux qui ne peuvent pas ouvrir les classeurs

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour,

    Merci de votre réponse une fois de plus

    Je vois joins un classeur simplifié, avec un exemple de données, et les formules mentionnées dans le message plus haut, que j'ai utilisé mais qui ne fonctionnent pas lorsqu'une espèce est présente plusieurs fois comme vous pouvez le voir.

    Je vous met également une capture d'écran de ce classeur.

    Bien cordialement

    Etienne
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    J'ai une question

    ta liste des espèces possède une liste de validation (déroulante) avec =#ref
    Je suppose que tu as donc une liste exhaustive quelque part dans une feuille "Liste" par exemple

    Dis moi si c'est bien le cas. Si c'est bien le cas dis moi combien cela représente d'espèces ?

    Merci à Bientôt

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour Igloobel,

    En effet, il y a une liste d'espèces sur une feuille à part (269 espèces et possibilité de la compléter). En fait je n'utilise plus l'outil validation et liste déroulante pour entrer des données (à part cas exceptionnel), mais je passe par un formulaire.

    Je n'ai pas mis tous ces aspects qui me semblaient compliquer la compréhension du fichier, mais si ça peut faciliter votre compréhension, je peux le joindre.

    Il se peut que toutes les macros ne fonctionnent pas, étant donné que dans l'onglet comportant les listes de données, j'ai remplacé la majorité du contenu par X


    Merci d'avance

    Etienne
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    je sais pas si ça va aider mais je crois que les fonctions : BDMAX, BDMIN, BDNB, BDLIRE te permet d'avancer
    BONNE CONTINUATION
    voila un lien avec un exemple je le trouve pertinent

  9. #9
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour à tous

    Citation Envoyé par BENNASR Voir le message
    bonjour
    je sais pas si ça va aider mais je crois que les fonctions : BDMAX, BDMIN, BDNB, BDLIRE te permet d'avancer
    BONNE CONTINUATION
    voila un lien avec un exemple je le trouve pertinent
    Bonjour à toi BENNASR j'ai eu la même idée car peu de gens utilise les formules BD

    Seulement lorsque j'ai vu le contenu de ses données je me suis aperçu que les formules BD ne convenaient pas
    je ne connais aucune formule BD qui compterais combien de données sans les doublons

    à moins qu'il y ait une formule récente ou une astuce ou encore une combinaison que je connaisse pas.

    Je rappelle que sa demande est sans les formules matricielles

    @ EAbadie

    Bon 269 espèces avec possibilité d'extention cela devient limite ingérable je te comprends

    Peut-être (suggestion) peux-tu créer une nouvelle donnée pour les classer par famille

    - J'ai essayé lesformules Bd comme je l'ai dit plus haut sans résultat
    - j'ai essayé le TCD, idem
    - j'ai essayé les sous-totaux, pareil
    - j'ai essayé SommeProd sans résultat probant (mais je ne suis pas un spécialiste de SommeProd)

    Bref sans les formules matricielles je vois pas

    Donc je pense qu'il reste plus que les macros. Quel est ton niveau en VBA ?

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour BENNASR et Igloobel,

    Merci à tous les deux pour votre temps et vos réponses.
    En effet avec les formules BD, je n'ai pas trouvé de solutions qui conviennent lorsque les données sont en doublon, idem avec les SOMMEPROD/NBSI.

    @Igloobel, je me permets de te tutoyer également si ça ne te dérange pas. Lorsque tu parles d'une variable pour les classer par famille, c'est afin d'avoir les espèces identiques à la suite ? J'ai la donnée "famille" qui est récupérée dans une liste par une macro ensuite.

    En VBA je suis encore un débutant, mais j'ai quand même codé pas mal de macros, formulaires avec import ou calcul de variables, rien de très compliqué mais je prends quand même plaisir à fouiner pour trouver des solutions et essayer de coder au mieux.

    Dites moi si des solutions vous viennent à l'esprit en macro. Je réfléchis de mon côté et posterai mes premiers essais si concluants ou non, car j'ai pas encore trop cherché avec les macro car je pensais au début y arriver à l'aide de formules uniquement.

    Bien à vous

    Etienne

  11. #11
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonsoir
    peut être ma réponse et hors jeu mais si la demande est de compter le nombre des articles dans une colonne sans doublons :
    données de B2 à B 10 :
    SOMMEPROD((FREQUENCE(B2:B10;B2:B10)>0)*1)

  12. #12
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Petite précision, il ne me faut pas de formule matricielle, mais le passage par une macro est possible, en tout cas le calcul doit être réalisé de matière directe ou via le passage d'une macro.
    Si traitement par Excel -->>
    Cela ne précise pas s'il faut impérativement une seule formule (ou une seule formule par zone) ou si sont autorisées plusieurs formules et deux colonnes (en précisant alors si plusieurs autorisées par zone concernée)

    Voudrais-tu par ailleurs recommencer ta copie d'écran en y mettant cette fois-ci les résultats à obtenir (que ce soit par formules ou par vba)

  13. #13
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour Unparia, et merci de ton intéret

    Ci joint la capture d l'exemple présenté plus haut mais avec les résultats attendus.
    Nom : Capture fiche2.jpg
Affichages : 721
Taille : 99,4 Ko

    Concernant le nombre de formules, ce n'est en effet pas gênant si il en faut plusieurs ou s'il faut ajouter une ou plusieurs colonnes. Ma seule contrainte est que le calcul doit être simultané ou mis à jour au cours d'une macro lancée par un bouton (la macro existe déjà mais ce calcul n'est pas développé dedans).

    Bien à vous

    Etienne

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bien
    Le niveau et la forme de mon aide vont maintenant dépendre de ta réponse précise à cette question -->>
    Quelle est la raison exacte pour laquelle est écartée une solution Excel à l'aide d'une formule matricielle ?

    J'attends ta réponse au sujet de cet aspect.

    PS : pour ton info -->> j'ai déjà la solution Excel avec une colonne tremplin.

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Avec des fonctions perso (+ rapides)

    Boisgontier
    Fichiers attachés Fichiers attachés

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    J'ai à la base écarté les formules matricielles car elles doivent être validées au clavier (et du coup je ne les utilise pour ainsi dire jamais, mais c'est sans doute une erreur de ma part)
    Cependant, si ce sont elles qui permettent de trouver une solution le plus simplement, les formules matricielles peuvent à priori être validées par macro (je viens de vérifier), et donc pourraient constituer une solution.

    En fait j'ai besoin que le classeur soit mis à jour soit automatiquement, soit via une seule action à réaliser : un bouton de commandes qui existe déja (voir deuxième fichier joint).

    Etienne

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    En VBA


    Boisgontier
    Fichiers attachés Fichiers attachés

  18. #18
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Alors voilà, en exemple
    Nom : especes.JPG
Affichages : 755
Taille : 117,5 Ko
    (à toi de modifier les références en fonction de la disposition de tes colonnes)
    - formule en D2 et formule en E2 à tirer vers le bas autant que de besoin
    - masquer la colonne D (le tremplin)

  19. #19
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Parfait, vraiment merci à tous, j'essaie tout ça et je vous dit !

    Etienne

  20. #20
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2018
    Messages : 18
    Par défaut
    Bonjour Boisgontierjacques


    Merci beaucoup pour cette macro, qui fonctionne une fois adaptée.
    Cependant, lorsqu'une cellule vide est présente, c'est à dire lorsque pas d'observation dans une partie de la zone, la macro enregistre tout de même une observation.
    Je regarde si je parviens à rajouter la condition <>"" ou <>"-" (à l'origine je met un "-" dans le formulaire lorsque aucune observation n'est faite) pour éviter cela, mais pas évident à première vue.

Discussions similaires

  1. [XL-2010] Compter le nombre de valeurs différentes
    Par moi244 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/12/2012, 21h58
  2. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  3. [XL-2007] Nombre de valeurs différentes selon un critère
    Par neiluj26 dans le forum Excel
    Réponses: 5
    Dernier message: 27/01/2010, 11h09
  4. Comment compter le nombre de valeur différentes
    Par chelmi95 dans le forum IHM
    Réponses: 3
    Dernier message: 02/05/2008, 18h02
  5. Compter le nombre de valeurs différentes
    Par solorac dans le forum Excel
    Réponses: 6
    Dernier message: 21/04/2007, 16h13

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