frequence

Y compris Power BI, Power Query et toute autre question en lien avec Excel
j
julie670
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 28 mars 2016
Version d'Excel : 2007

Message par julie670 » 28 mars 2016, 13:59

Bonjour à tous,

voila j'ai un petit projet de VBA ( je n'ai pas le droit d'utiliser les fonctions d'excel) à rendre mais il s'avère que je bug un peu, j'aurais donc besoin de votre aide.
voici la consigne :
Histogramme de frequence :
La procédure dois d'adapter à toute taille de l'echantillon et c'est l'utilisateur qui choisit le nombre d'intervalle de découpage. Je veux donc juste en premier temps obtenir la fréquence.

Je me doute qu'il faut utiliser une boucle For avec la fonction step auquel je donne une variable rentré par inputbox comme ceci :
 p = InputBox("donnez le pas")
 For i = 2 To ? step p
1er probleme, je veux aller jusqu'à un nombre indeterminée ( pour s'adapter à tout type de table) , quel ? faut-il mettre ?
Normalement une boucle While est utile lorsque l'on ne connait pas le nombre d'itération mais step n'est pas compatible avec While...

Ensuite j'ai voulu faire un essaie de ma boucle pour 20 lignes afin d'obtenir la fréquence :
 p = InputBox("donnez le pas")
 For i = 2 To 20 Step p
 iRowsCount = Range("B:B").Cells.Count
 freq = iRowsCount
 MsgBox (freq)
 
 Next i
Mais j'ai une erreur m'indiquant un dépassement de capacité ... Donc j'ai du mal faire, je précise que je suis toute débutante ..

En cour, l'on a étudier les tableaux dynamiques et fixes, je pense donc c'est une piste mais je n'arrive pas du tout à le modéliser.


Merci d'avance, je suis preneuse de toute piste
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'058
Appréciations reçues : 126
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 28 mars 2016, 19:54

Salut Julie,

qu'appelles-tu exactement ta fréquence ?

Dans cette boucle, tu calcules le nombre de cellules (=lignes) de la colonne B...

A+
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 15'549
Appréciations reçues : 554
Inscrit le : 27 août 2012
Version d'Excel : 365 Insider

Message par Jean-Eric » 28 mars 2016, 20:26

Bonjour et bienvenu(e),
Peux-tu préciser ta demande et joindre un petit fichier?
Cdlt.
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 28 mars 2016, 21:29

Bonsoir,

On ne voit pas où veut en venir ta macro... mais c'est secondaire pour l'erreur, on ne voit pas non plus tes déclarations de variables mais il y a une chance que iRowsCount soit de type Integer, ce qui rend sans appel le dépassement de capacité au 1er tour de boucle ! :)
j
julie670
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 28 mars 2016
Version d'Excel : 2007

Message par julie670 » 28 mars 2016, 21:42

Alors voici le fichier de départ

Le but final étant de vérifier la distribution normale des données.
Donc quand je parle de frequence, je pense qu'il veut le nombre de date où le cour de l'action se trouve entre tel et tel limite (pas donnez par mon inputbox). Je ne suis pas sur, c'est ce que j'ai compris d'après l'énoncé que j'ai écrit dans le premier post.

Je suis désolé pour la maigre boucle, mais je suis totalement pommé, je ne sais pas comment faire ( alors que sur excel, en utilisant freq ça prend 2 minutes ! )

Pour la capacité, faut-il que le mette en as double plutot que as integer c'est ça ??
Applications-financières-ju.xlsm
(259.66 Kio) Téléchargé 17 fois
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'058
Appréciations reçues : 126
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 28 mars 2016, 22:15

Bonsoir Julie,

ça m'étonnerait que ce soit aussi simple!
Ici, deux InputBox te permettent d'entrer les limites inférieures et supérieures, la boucle calculant le nombre de jours (lignes) dont le cours se situe entre ses limites (limites comprises).
Le résultat s'affiche dans une MsgBox.
[/Private Sub CommandButton1_Click()
'
Dim dFlag1 As Double
Dim dFlag2 As Double
'
dFlag1 = InputBox("Cours inférieur")
dFlag2 = InputBox("Cours supérieur")
'
iFlag = Range("A" & Rows.Count).End(xlUp).Row
'
iFlag1 = 0
For x = 2 To iFlag
    If Cells(x, 2) >= dFlag1 And Cells(x, 2) <= dFlag2 Then iFlag1 = iFlag1 + 1
Next
'
MsgBox "Nombre de jours : " & iFlag1 & " sur " & iFlag-1  & " jours."
'
End Sub
code]

Pas de quoi paniquer!  :wink: 

A+
j
julie670
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 28 mars 2016
Version d'Excel : 2007

Message par julie670 » 28 mars 2016, 22:31

Waw merci je n'arrivais absolument pas à faire ressortir le nombre de jours entre deux cours, c'est déjà une grande avancé même si je comprends pas :

iFlag = Range("A" & Rows.Count).End(xlUp).Row
Quelle est la régle générale d'écriture, les arguments ?


Maintenant je ne pense pas que ça répond entièrement à la question :
"la procédure doit s’adapter à toute taille del’échantillon" - d'accord car la boucle continue jusque la cellule soit vide
"et c’est l’utilisateur qui choisit le nombre de découpage (nombre de pas) - là je pense que ça ne colle pas car (si j'ai bien compris), il faut que par exemple pour un pas de 3, que le programme donne l'effectif/le nombre de jour entre 0 et 3, 3 et 6, 6et 9 etc...
Est-ce que mon intuition est la bonne ?

Et comment l'introduire dans la boucle ? Je viens d'essayer avec "step" mais le fait qu'on l'on mette manuellement Dflag1 ni Dflag2 pose problème... je pense qu'il ne faut pas utiliser... mais un inputbox pour le pas non ?
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 28 mars 2016, 22:43

Re,
Il y a plusieurs pbs de compréhension...
L'erreur vient bien d'affecter à un Integer une valeur constante (le nb de lignes de la feuille : 1048576 sauf erreur de qq unités).
Tu voulais certainement écrire autre chose...
Mais il me semble qu'en initiant une boucle de 2 à 20 avec pas variable, tu voulais aussi faire autre chose que ce que tu as écrit.
i variera de 2 à 20 pas plus, il prendra toutes les valeurs intermédiaires par pas de 1 si tu ne mets pas de pas. si tu mets un pas de 2, il prendra les valeurs 2, 4, 6, 8,... 18, 20. Si tu mets un pas de 3, les valeurs : 2, 5, 8, 11, 14, 17, 20. Etc. Et si tu mets un pas de 18, il prendra les valeurs 2 et 20. Et pour tout pas supérieur, il ne prendra que la valeur 2 !

Enfin, ta référence à la fonction FREQUENCE d'Excel ne me semble pas adaptée à la question. Cette fonction donne une fréquence absolue dans les intervalles définis, soit le nombre de valeurs brut par classe ou intervalle. Or, d'autant plus qu'on te précise que tu dois t'adapter à toute taille d'échantillon, il s'agit ici de fréquence relative (qu'on appelle d'ailleurs simplement fréquence en stats). Pas de difficulté, il s'agit simplement de diviser le nombre de valeurs par classe par le nombre total de valeurs.
Mais il y a aussi un autre élément si l'intention est de comparer, c'est de définir des classes permettant des comparaisons, c'est à dire définies par rapport à des éléments ayant la même signification pour tes différents échantillons.

Exemple : 2 classes: <=moyenne / >moyenne
3 classes: <=(moyenne-1écart-type) / >(moyenne-1écart-type)et<=moyenne+1écart-type / >moyenne+1écart-type
Tu peux faire 4 classes avec comme bornes la moyenne et + ou - 2 écart-type

Le nombre de classes doit rester réduit. Pour ma part je ne dépasserai pas 3 classes, ce qui affinera les résultats fournis par le tableau des divers indicateurs stats.

Une fois tes classes choisies, la procédure est simple à définir : une variable par classe pour recueillir le nombre de valeurs, une boucle sur ton échantillon (+1 dans la variable-classe concernée selon valeur). Tu divises les valeurs obtenues par le nombre d'éléments de l'échantillon pour avoir la série destinée à construire l'histogramme.
La même chose pour chaque échantillon.

Cordialement.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'201
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 28 mars 2016, 22:58

Re Curulis... Je ne te suis pas dans la démarche. As-tu regardé le fichier ? Et on ne lui demande pas de faire des simulations.

On a un tableau de stats descriptives assez classique. J'ai tout de même tiqué sur skewness [on n'arrête pas de s'angliciser, asymétrie dit pourtant bien ce que ça veut dire !]

Bref à part ça, si nous avons souvent des demandeurs venant demander du VBA mais à qui, dans une situation similaire, on ne l'a pas demandé, ici Julie nous dit qu'elle ne doit justement pas utiliser de formule. Ce qui paraît justifié eût égard au fait qu'il n'y a pas de fonction intégrée fournissant ce qui est demandé.

Et là l'utilisation de VBA simplifie effectivement le calcul :
-une première boucle sur les 4 échantillons
-calcul des valeurs bornes de classes (à partir du tableau de stats si on me suit)
-une boucle sur l'échantillon
-affectation des valeurs recueillies et calculées dans la zone qui servira aux séries graphiques
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'058
Appréciations reçues : 126
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 28 mars 2016, 23:10

Bonsoir MFerrand,

comme je le faisais remarquer, ça m'aurait étonné que ce soit aussi facile!
Les maths pures, ce n'est pas du tout mon truc!
Je préfère de loin les dépatouillages logiques de situations chaotiques!

Je vous suis de derrière pour connaître le mot de la fin!

A+
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message
  • Fréquence
    par Romain84 » 7 mars 2017, 14:50 » dans Excel - VBA
    1 Réponses
    99 Vues
    Dernier message par LouReeD
    11 mars 2017, 21:55
  • fréquence
    par tapir26200 » 24 juin 2018, 19:02 » dans Excel - VBA
    16 Réponses
    317 Vues
    Dernier message par eriiic
    26 juin 2018, 21:37
  • Tableau de Fréquence
    par JossBeaumont » 23 août 2014, 13:19 » dans Excel - VBA
    4 Réponses
    470 Vues
    Dernier message par Jean-Eric
    24 août 2014, 10:42
  • Fonction FREQUENCE
    par damhuet » 4 janvier 2015, 23:17 » dans Excel - VBA
    4 Réponses
    664 Vues
    Dernier message par Jean-Eric
    6 janvier 2015, 12:01
  • TF : Taux de Fréquence
    par Ban54 » 18 juin 2015, 16:57 » dans Excel - VBA
    2 Réponses
    834 Vues
    Dernier message par Ban54
    19 juin 2015, 11:53
  • Frequence et TCD
    par gramond » 10 mai 2019, 18:24 » dans Excel - VBA
    14 Réponses
    74 Vues
    Dernier message par 78chris
    10 mai 2019, 20:24