VBA : Probleme avec WorksheetFunction.CountIf
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

VBA : Probleme avec WorksheetFunction.CountIf



  1. #1
    RomVi

    VBA : Probleme avec WorksheetFunction.CountIf


    ------

    Bonjour à tous


    J'ai tenté aujourd'hui de faire une petite macro qui comptabilise des données par classes, afin d'avoir un aperçu de la répartition.
    Le code n'est pas encore complet (je ne compte pas le nombre de valeurs comprises entre les intervalles, mais celles qui sont supérieures à chaque borne inférieure de l'intervalle).

    Le problème se situe sur le comptage des valeurs ; la variable nbval reste toujours à 0. Je me suis creusé la tête un moment mais je n'ai pas trouvé d'explication...

    Par la suite si quelqu'un me trouve la solution je vais utiliser WorksheetFunction.CountIfs pour encadrer chaque intervalle.


    Code:
    Sub repartition()
    
     
    
    'calcule le nombre d’occurrences dans une série de données par classes
    
     
    
        'declaration variables
    
        Dim Plage As Range
    
        Dim Mini As Single, Maxi As Single, valinf As Single
    
        Dim nbval() As Integer, Nombre As Integer, NbClasses As Integer
    
       
    
        Set Plage = Selection
    
     
    
        'recherche des valeurs mini et maxi dans la selection
    
        'ainsi que le nombre de valeurs
    
        Mini = WorksheetFunction.Min(Plage)
    
        Maxi = WorksheetFunction.Max(Plage)
    
        Nombre = WorksheetFunction.Count(Plage)
    
           
    
        'En cas d'erreur, on va à l'étiquette Erreur
    
        'On Error GoTo Erreur
    
       
    
        'Inputbox pour connaitre le nombre de classes (10 par défaut)
    
        NbClasses = InputBox("Mini : " & Mini & Chr(13) & "Maxi : " & Maxi & Chr(13) & "Nb valeurs : " & Nombre & Chr(13) & Chr(13) & "Nombre de classes ?", "Recapitulatif", 10)
    
           
    
        'redim sur la variable tableau nbval en fonction du nombre de classes
    
        ReDim nbval(NbClasses)
    
       
    
        'defini la taille de l'intervalle entre chaque classe
    
        Intervalle = (Maxi - Mini) / NbClasses
    
           
    
        'boucle sur le nombre d'intervalles définis
    
        For i = 0 To NbClasses - 1
    
       
    
            'defini la borne inférieure de chaque intervalle
    
            valinf = Mini + (i * Intervalle)
    
           
    
            'compte le nombre de valeurs supérieures à la borne basse dans chaque intervalle
    
            nbval(i) = WorksheetFunction.CountIf(Plage, ">" & valinf)
    
           
    
            'msgbox pour vérifier si ça fonctionne
    
            MsgBox ("nb val > à : " & valinf & Chr(13) & nbval(i))
    
     
    
       
    
        Next i
    
              
    
        Exit Sub
    
       
    
        
    
    Erreur:
    
    MsgBox "Erreur", vbCritical
    
     
    
       
    
    End Sub

    -----

  2. #2
    vande545

    Re : VBA : Probleme avec WorksheetFunction.CountIf

    Bonjour
    Je ne comprends pas la valeur que tu mets dans NbClasses :
    Code:
    NbClasses = InputBox("Mini : " & Mini & Chr(13) & "Maxi : " & Maxi & Chr(13) & "Nb valeurs : " & Nombre & Chr(13) & Chr(13) & "Nombre de classes ?", "Recapitulatif", 10)
    Tu es sûr qu'elle génère le nombre entier attendu par nbval ?

    Remarque : tu mets parfois des majuscules aux variables (NbClasses), parfois non (nbval) ; y a -t- il une raison car c'est un risque d'erreur ?

  3. #3
    RomVi

    Re : VBA : Probleme avec WorksheetFunction.CountIf

    Bonjour

    La valeur de NbClasses est directement renseignée par l'utilisateur, donc ce n'est pas censé arriver. Cette variable permet de définir le nombre de classes, c'est à dire le nombre de groupes de tailles égales dans lesquelles on va dénombrer les valeurs.
    J'ai tout de même pris le cas en compte : La ligne est inactivée, mais si on entre autre chose qu'une valeur entière il y aura forcement une erreur lors du redim, et on saute à l’étiquette erreur.

    En ce qui concerne l'utilisation de majuscule c'est simplement que je n'avais pas corrigé, en principe je les utilise systématiquement pour plus de lisibilité, mais même en cas d'erreur VBA corrige automatiquement la casse (si on oublie une majuscule qui existe sur la variable déclarée il la rajoute).

  4. #4
    vande545

    Re : VBA : Probleme avec WorksheetFunction.CountIf

    Procède par étape, mode pas à pas, en vérifiant que :
    - NbClasses prend bien un nombre entier ;
    - nbval est bien redimensionné à la valeur de NbClasses.

    En mode pas à pas, tu exécute ligne à ligne ou tu mets des points d'arrêt aux lignes suivant les variables à vérifier. Quand la ligne est exécutée, tu passe le curseur sans cliquer sur la variable à vérifier. Sa valeur doit s'afficher.

  5. A voir en vidéo sur Futura
  6. #5
    Stan_94

    Re : VBA : Probleme avec WorksheetFunction.CountIf

    Bonjour,
    pour info je viens de tester le code donné et tout fonctionne correctement de mon point de vue.
    C'est donc que l'algo ne correspond pas à ce que RomVi souhaite faire, probablement !

  7. #6
    RomVi

    Re : VBA : Probleme avec WorksheetFunction.CountIf

    J'ai été un peu avare de détails ; voici ce qui se passe :

    - Je sélectionne une plage de valeur
    - J’exécute la macro
    - J'ai un petit recap, avec valeur mini, maxi, nombre de valeur, et on me demande le nombre de classes. Je renseigne une valeur entière, ou je garde celle par défaut
    - Les limites de chaque classe fonctionnent bien, mais je devrais logiquement avoir chaque fois le nombre de valeurs supérieures à la limite basse, or j'ai chaque fois une valeur égale à 0

Discussions similaires

  1. Problème de son avec webcam HD avec micro sous Windows 10
    Par yllen dans le forum Logiciel - Software - Open Source
    Réponses: 11
    Dernier message: 25/08/2020, 17h24
  2. Problème avec la SynScan avec la monture HEQ5 Pro GoTo
    Par zaqiel dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 9
    Dernier message: 04/07/2015, 10h17
  3. Problème avec google chrome (et avec mon ordinateur en général)
    Par invite3ca6b457 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 03/02/2013, 18h29
  4. Réponses: 0
    Dernier message: 26/04/2011, 22h25
  5. Réponses: 10
    Dernier message: 22/03/2009, 11h34