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
-----