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 des ensembles en VBA WorksheetFunction.CountIf


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Par défaut Compter des ensembles en VBA WorksheetFunction.CountIf
    Bonjour,
    J'utilise WorksheetFunction.CountIf de cette façon,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a = 18
    n1 = 1
    n2 = 2
     
    n2 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n1)
    n4 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n3)
    n2 donne la quantité numéraire de n1 dans Range(Cells(a, 3), Cells(a, 22).
    n4 donne la quantité numéraire de n2 dans Range(Cells(a, 3), Cells(a, 22).

    j'ai besoin de compter deux ou plusieurs valeurs en même temps.
    peut-on en une seule ligne de code avec WorksheetFunction.CountIf, compter deux valeurs ou plusieurs valeurs en même temps ?

    En résumé, compter des ensembles de deux valeurs numéraires ou des ensembles de plusieurs valeurs numéraires dans une ligne et/ou dans plusieurs lignes à la fois.
    en sachant que :
    n1 = 1, n3 = 2, n5 = 3, n7 = 4 ....etc

    D'avance merci infiniment.

    Ps: j'ai essayé avec cette ligne de code( WorksheetFunction.CountIfs ou WorksheetFunction.CountA ou WorksheetFunction.Count ) pour compter des ensembles de deux valeurs,....évidement ça ne marche pas !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 511
    Par défaut
    Hello,

    La fonction CountIfs peut-elle faire ton bonheur ?
    Sauf erreur de ma part, c'est l'équivalent de la formule SOMME.SI.ENS

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Hello,

    La fonction CountIfs peut-elle faire ton bonheur ?
    Sauf erreur de ma part, c'est l'équivalent de la formule SOMME.SI.ENS
    Bonjour,
    et non, j'ai déjà essayé countifs, countA et count. ça ne marche pas.
    -------------------------------------
    comment mettre les deux valeurs (ou plusieurs) sur un même ligne de code, de façon à avoir le total de l'ensemble de deux ou plus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a =18
    n1 = 1
    n3 = 2
    n2 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n1)
    n4 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n3)
    d'avance Merci !
    ps: ces deux lignes fonctionnent, mais elles gèrent qu'une valeurs à la fois.

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2007
    Messages
    1 142
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 142
    Par défaut
    Bonjour,

    comment mettre les deux valeurs (ou plusieurs) sur un même ligne de code, de façon à avoir le total de l'ensemble de deux ou plus.
    Ce que tu veux faire est une somme matricielle qui fonctionne très bien en formule mais pas en VBA.
    Tu peux mettre la formule dans une cellule et récupérer le résultat mais difficile sur une seule ligne.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 511
    Par défaut
    Après mûre réflexion,
    ton code est bien comme il est, je ne voit nulle besoin d'y toucher surtout pour une pseudo amélioration.

    Qu'on soit d'accord, le premier but d'un code source est d'être lu et compréhensible.
    Qu'il produise le résultat escompté n'arrive qu'en seconde position.
    De plus un code court n'implique pas qu'il soit plus rapide.

    Alors les problématiques d'en faire un maximum sur une seule ligne, on s'en cogne.

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Par défaut CountIf
    Bonjour,
    le code est bon quand il s'agit d'une ligne. J'ai créé un moteur qui incrémente qui donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    dim a, n5, N7, x, mot1 as Integer
    a =18
    n5 = 1
    n7 = 2
    x = 0
    For mot1 = 1 To 14
     
                                 n2 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n5)                           
                                 n4 = WorksheetFunction.CountIf(Range(Cells(a, 3), Cells(a, 22)), n7)
     
                              If n2 = 1 And n4 = 1 Then ' quand n5 et N7 sont présents sur la ligne : x augmente de 1 
                               x = x + 1
                              End If
      a = a + 1
    next mot1
    Mais, je souhaiterai dans cet ensemble de lignes (14 lignes) d'un seul coup avoir le total des ensembles de n5 et N7, et pourquoi pas si c'est possible avec plus valeurs, n5,n7,n9...etc
    En sachant que le nombre de lignes peut aller jusqu'à plusieurs centaines !
    Si tu me confirmes que c'est beaucoup plus difficile, n'en parlons plus.
    Merci pour ton aide.

Discussions similaires

  1. [XL-2016] VBA compter des valeurs en "heure" via une boucle
    Par roulax dans le forum Excel
    Réponses: 4
    Dernier message: 15/02/2022, 11h38
  2. [XL-2010] Compter des doublons en VBA.
    Par vindkald dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/01/2014, 17h12
  3. VBA Fonction WorksheetFunction.CountIf
    Par JonathanF dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/10/2011, 14h33
  4. Problème de compréhension des ensembles
    Par Cornell dans le forum Langage
    Réponses: 6
    Dernier message: 07/02/2003, 22h07
  5. trier un tableau et compter des elements du tableau
    Par remi51 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 17/06/2002, 16h51

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