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 sur un intervalle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut compter le nombre de valeurs sur un intervalle
    Bonjour a tous bonjour a chacun

    Apres une premiere demande semble t il mal formulée je sollicite a nouveau le forum

    A l' aide du tableau suivant je souhaite utiliser une fonction de denombrement afin d obtenir le resultat suivant ;

    Ayant choisit arbitrairement le nom et la quantité

    je souhaite obtenir le nombre de fois ou on a la quantite sur une tranche de + ou - 100.

    Par exemple en choisissant "charlton" et "quantité " 200,

    on a charlton sur la tranche 100 a 300. le nombre est 3

    Vous remerciant

    Ivan
    Fichiers attachés Fichiers attachés

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Je te propose ceci :

    1. tu crées un nom défini pour la plage de valeurs concernées, et tu le désigne, par exemple monTableau
    2. Dans un module standard de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function fNombre(ByRef oRng As Excel.Range, ByVal sNom As String, ByVal sngVal As Single) As Integer
    'v = tableau de donnée, colonne 2 = nom; colonne 6 = quantité
    Application.Volatile
     
    Dim v As Variant, i As Integer
     
    v = oRng.Value
    fNombre = 0
     
    For i = 1 To UBound(v, 1)
        If (v(i, 2) = sNom) And (v(i, 6) > sngVal - 100) And (v(i, 6) < sngVal + 100) Then fNombre = fNombre + 1
    Next i
     
    End Function
    3. Dans ta feuille, là où tu attends le résultat, tu tapes la formule "=fnombre(monTableau;K1;K2)", K1 est la cellule qui donne le nom et K2 la quantité.

    Cordialement,

    PGZ

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 5
    Par défaut
    Bonjour pgz

    Merci d avoir pris le temps de repondre a ma demande

    Je suis pas tres a l aise avec le VBA je garde la solution proposee sous le coude.

    Un grand merci a toi

    Bonne continuation

    ivan

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La formule SOMMEPROD est une solution.
    Exemple pour des noms se trouvant en colonne A (A2:A150) et les quantités en colonne E (E2:E150) en N1 la valeur alphanumérique Charlton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD( ($A$2:$A$150=$N$1) * ($E$2:$E$150>=100) * ($E$2:$E$150<=300) * 1)
    Reste à déterminé comment calculer cette tranche. Parce-que si tu écris 200 et que tu cherches entre 100 et 300 c'est une tranche de 200.

    Une autre option est la formule BDNB de la catégorie Base de données.
    La zone des critères sera $N$1:$P$2 où les étiquettes de colonne seront Nom, Qté, Qté et les critères en ligne 2 ($N$2:$P$2) Charlton, >=100, <=300
    La formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =BDNB(A1:L150;E1;$N$1:$P$2)
    Attention que les étiquettes de colonne (Nom, Qté) placées dans la zone des critères doivent avoir la même orthographe que celles de la zone des données.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/10/2012, 21h46
  2. [XL-2010] Compter le nombre de valeurs identiques sur une feuille
    Par Yepazix dans le forum Excel
    Réponses: 5
    Dernier message: 10/07/2011, 00h26
  3. Réponses: 3
    Dernier message: 08/04/2009, 12h10
  4. Réponses: 6
    Dernier message: 04/11/2008, 22h35
  5. [C#] Compter le nombre de TEXTBOX sur une page ASPX
    Par alain_27 dans le forum ASP.NET
    Réponses: 9
    Dernier message: 27/05/2005, 14h19

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