Calcul décile Excel
Fermé
katiaboutamdja
Messages postés
13
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
15 décembre 2010
-
Modifié par katiaboutamdja le 8/12/2010 à 14:29
katiaboutamdja Messages postés 13 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 15 décembre 2010 - 15 déc. 2010 à 14:32
katiaboutamdja Messages postés 13 Date d'inscription jeudi 11 novembre 2010 Statut Membre Dernière intervention 15 décembre 2010 - 15 déc. 2010 à 14:32
A voir également:
- Decile excel
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
- Déplacer une colonne excel - Guide
6 réponses
katiaboutamdja
Messages postés
13
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
15 décembre 2010
3
8 déc. 2010 à 16:35
8 déc. 2010 à 16:35
Merci pour ta réponse
Les deciles jlai ai déja calculé pour chaque colonne
Ouais effectivement c pas simple
jpourrais faire ca avec un macro vb mais j'y arrive pas non plus jcrois que c encore plus dur:
j'ai un code qui marche bien mais c'est juste pour une colonne car bien sur les valeurs des déciles changent d'une colonne à l'autre:
C ca ma macro si tu connais mieux vba mais bien sur c que pour les déciles de la 1ère colonne donc bien sur j'aimerai généraliser ca pour toutes les autres colonnes.......
Merci pour tes réponses.
Sub Décile()
Décile1 = 20.9
Décile2=...........
jusuq à Décile9
Dim w As Worksheet
For Each w In Worksheets
Range("AM20:FB619").Select
For Each Cellule In Selection
If Cellule.Value < Décile1 Then Cellule.Value = D1
.......................
If Cellule.Value > Décile9 Then Cellule.Value = D10
Next Cellule
Next w
End Sub
Les deciles jlai ai déja calculé pour chaque colonne
Ouais effectivement c pas simple
jpourrais faire ca avec un macro vb mais j'y arrive pas non plus jcrois que c encore plus dur:
j'ai un code qui marche bien mais c'est juste pour une colonne car bien sur les valeurs des déciles changent d'une colonne à l'autre:
C ca ma macro si tu connais mieux vba mais bien sur c que pour les déciles de la 1ère colonne donc bien sur j'aimerai généraliser ca pour toutes les autres colonnes.......
Merci pour tes réponses.
Sub Décile()
Décile1 = 20.9
Décile2=...........
jusuq à Décile9
Dim w As Worksheet
For Each w In Worksheets
Range("AM20:FB619").Select
For Each Cellule In Selection
If Cellule.Value < Décile1 Then Cellule.Value = D1
.......................
If Cellule.Value > Décile9 Then Cellule.Value = D10
Next Cellule
Next w
End Sub
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 8/12/2010 à 17:15
Modifié par eriiic le 8/12/2010 à 17:15
Bonjour,
proposition en vba :
sélectionner la plage et lancer la macro.
Fais qcq tests pour voir si ça correspond à ce que tu veux
eric
EDIT : ajout d'une petite sécurité pour éviter les erreurs de manip
proposition en vba :
sélectionner la plage et lancer la macro.
Sub decile() Dim decile(9) As Double, c As Range, i As Long If MsgBox("Remplacer par les déciles sur " & Selection.Address & ". (" & Selection.Cells.Count & " valeurs)", vbYesNo + vbQuestion, "Confirmation") = vbNo Then Exit Sub For i = 1 To 9 decile(i) = Application.WorksheetFunction.Percentile(Selection, i / 10) Next i For Each c In Selection For i = 9 To 1 Step -1 If c > decile(i) Then Exit For Next i c = "D" & i + 1 Next c End Sub
Fais qcq tests pour voir si ça correspond à ce que tu veux
eric
EDIT : ajout d'une petite sécurité pour éviter les erreurs de manip
katiaboutamdja
Messages postés
13
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
15 décembre 2010
3
Modifié par katiaboutamdja le 9/12/2010 à 16:20
Modifié par katiaboutamdja le 9/12/2010 à 16:20
Jte remercie beaucoup pour ton aide.
mes chiffres vont de AM20 à FB619 avec beaucoup de cellules vide qui doivent rester vide et avec cette macro j'ai des D10 un peu partout y compris la ou j'ai des cellules vides.
Sinon en comparant à une colonne que je fait sur Excel en utilisant la fonction centile à part les D10 que j'ai à la place des cellules vides j'ai des petites différences pour le dernier décile du style j'ai D10 avec cette macro et moi sur ma colonne en utilisant excel(la fonction centile) j'ai D9
Et sinon en vb tu connais pas comment on utilise les tableaux c beaucoup plus rapide pour des tableaux de taille importante, cette macro se fait en 1 min à peu près. mais la vitesse de la macro c secondaire t deja trop gentil de m'aider
Merci encore pour ton aide c sympa.
mes chiffres vont de AM20 à FB619 avec beaucoup de cellules vide qui doivent rester vide et avec cette macro j'ai des D10 un peu partout y compris la ou j'ai des cellules vides.
Sinon en comparant à une colonne que je fait sur Excel en utilisant la fonction centile à part les D10 que j'ai à la place des cellules vides j'ai des petites différences pour le dernier décile du style j'ai D10 avec cette macro et moi sur ma colonne en utilisant excel(la fonction centile) j'ai D9
Et sinon en vb tu connais pas comment on utilise les tableaux c beaucoup plus rapide pour des tableaux de taille importante, cette macro se fait en 1 min à peu près. mais la vitesse de la macro c secondaire t deja trop gentil de m'aider
Merci encore pour ton aide c sympa.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
9 déc. 2010 à 17:33
9 déc. 2010 à 17:33
ok, je verrai ça ce soir (si pas de pb...)
par contre ça serait interessant que tu déposes un fichier anonymisé sur cijoint.fr et que tu colles le lien ici.
Précises dessus là où tu trouves des différences (D9-D10). Moi j'ai utilisé If c > decile(i), il faut peut-être >= ?
Et précise aussi si tu as des cas en plus que les cellules vides à ne pas traiter
eric
par contre ça serait interessant que tu déposes un fichier anonymisé sur cijoint.fr et que tu colles le lien ici.
Précises dessus là où tu trouves des différences (D9-D10). Moi j'ai utilisé If c > decile(i), il faut peut-être >= ?
Et précise aussi si tu as des cas en plus que les cellules vides à ne pas traiter
eric
katiaboutamdja
Messages postés
13
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
15 décembre 2010
3
Modifié par katiaboutamdja le 9/12/2010 à 17:40
Modifié par katiaboutamdja le 9/12/2010 à 17:40
j'arrive pas à le déposer mon fichier il est ptetre trop lourd. mais jpeux tlenvoyer par mail, le mien c doudou-boutamdja009@hotmail.fr
Merci encore t gentil
Merci encore t gentil
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 9/12/2010 à 18:40
Modifié par eriiic le 9/12/2010 à 18:40
S'il ne passe pas sur cijoint.fr il passera encore moins par mail...
Allège-le, le tout est qu'il y ait une plage où la différence se produit. Et s'il fait plus de 8Mo tu peux le zipper
Précise aussi si tu n'as que des valeurs dans les plages concernées ou s'il peut y avoir des formules à conserver.
eric
PS : édite ton message pour éliminer l'adresse mail si tu ne veux pas être spammée encore plus
Allège-le, le tout est qu'il y ait une plage où la différence se produit. Et s'il fait plus de 8Mo tu peux le zipper
Précise aussi si tu n'as que des valeurs dans les plages concernées ou s'il peut y avoir des formules à conserver.
eric
PS : édite ton message pour éliminer l'adresse mail si tu ne veux pas être spammée encore plus
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 9/12/2010 à 21:50
Modifié par eriiic le 9/12/2010 à 21:50
J'ai trouvé l'erreur sûrement à l'origine des différences (i as long au lieu de as double)
Contrôle avec cette version, le fichier exemple n'est peut-être pas nécessaire.
Je calcule en mémoire, ça devrait être plus rapide
eric
Contrôle avec cette version, le fichier exemple n'est peut-être pas nécessaire.
Je calcule en mémoire, ça devrait être plus rapide
Sub decile() Dim decile(9) As Double, i As Double Dim datas(), lig As Long, col As Long If MsgBox("Remplacer par les déciles sur " & Selection.Address & ". (" & Selection.Cells.Count & " valeurs)", vbYesNo + vbQuestion, "Confirmation") = vbNo Then Exit Sub If Selection.Cells.Count = 1 Then Exit Sub datas = Selection For i = 1 To 9 decile(i) = Application.WorksheetFunction.Percentile(datas, i / 10) Next i For lig = 1 To Selection.Rows.Count For col = 1 To Selection.Columns.Count If datas(lig, col) <> "" Then For i = 1 To 9 If datas(lig, col) <= decile(i) Then Exit For Next i datas(lig, col) = "D" & i End If Next col Next lig Selection = datas End Sub
eric
Merci beaucoup pour ton aide
sinon
pour les cellules vides c bon ces cellules reste vide
Mais avec cette macro ca m'affiche toujours un ou deux décile en dessous ou au dessus par rapport à excel avec la fonction centile.
par exemple à la ligne 27 avec cette macro on a D8 D8 D8 D1 D1 D1 D1....
et avec ma fonction centile d'excel (à la ligne 1027) D9 D9 D9 D3 D3 D3 D3
Donc je sais pas pourquoi
en tout cas merci bien. jvais essayer dbosser dessus pour essayer dcomprendre pourquoi
sinon
pour les cellules vides c bon ces cellules reste vide
Mais avec cette macro ca m'affiche toujours un ou deux décile en dessous ou au dessus par rapport à excel avec la fonction centile.
par exemple à la ligne 27 avec cette macro on a D8 D8 D8 D1 D1 D1 D1....
et avec ma fonction centile d'excel (à la ligne 1027) D9 D9 D9 D3 D3 D3 D3
Donc je sais pas pourquoi
en tout cas merci bien. jvais essayer dbosser dessus pour essayer dcomprendre pourquoi
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
Modifié par eriiic le 10/12/2010 à 18:36
Modifié par eriiic le 10/12/2010 à 18:36
J'avais testé sur un petit tableau aléatoire, les déciles avaient la même valeur sur la feuille et en vba.
De plus WorksheetFunction.Percentile fait appel à la fonction centile() des feuilles
Sans fichier exemple avec erreur impossible de rechercher qcq chose...
Après avoir déposé ton fichier sur cijoint.fr il faut coller le lien fourni ici.
eric
De plus WorksheetFunction.Percentile fait appel à la fonction centile() des feuilles
Sans fichier exemple avec erreur impossible de rechercher qcq chose...
Après avoir déposé ton fichier sur cijoint.fr il faut coller le lien fourni ici.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
katiaboutamdja
Messages postés
13
Date d'inscription
jeudi 11 novembre 2010
Statut
Membre
Dernière intervention
15 décembre 2010
3
15 déc. 2010 à 14:32
15 déc. 2010 à 14:32
Bon..
Je sais pas pourquoi c'est différent mais jbalance ca comme ca.
En tout cas merci beaucoup.
Je sais pas pourquoi c'est différent mais jbalance ca comme ca.
En tout cas merci beaucoup.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
8 déc. 2010 à 16:10
8 déc. 2010 à 16:10
bonjour,
exposé comme ça ce n'est pas simple.
pour infos, il faut utiliser la fonction centile(matrice;0,1) : 0,1 représente le décile.
la matrice représente la colonne A ou b ou c ou tout autre zone.
Donc en résumé on a une matrice (ensemble de cellule) qui donne une valeur.
Je pense qu'il faut recréer un autre tableau mais cela reste flou.
A+
exposé comme ça ce n'est pas simple.
pour infos, il faut utiliser la fonction centile(matrice;0,1) : 0,1 représente le décile.
la matrice représente la colonne A ou b ou c ou tout autre zone.
Donc en résumé on a une matrice (ensemble de cellule) qui donne une valeur.
Je pense qu'il faut recréer un autre tableau mais cela reste flou.
A+