Erreur 400, trop de calculs?
Résolu/Fermé
ezor
Messages postés
176
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
27 octobre 2016
-
Modifié par ezor le 31/08/2015 à 13:30
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - 1 sept. 2015 à 10:47
ezor Messages postés 176 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 27 octobre 2016 - 1 sept. 2015 à 10:47
A voir également:
- Erreur 400, trop de calculs?
- Erreur 1004 vba ✓ - Forum VB / VBA
- Erreur 1000 france tv - Forum MacOS
- Youtube une erreur s'est produite ✓ - Forum YouTube
- Iptv erreur de lecture - Forum Vidéo/TV
- Free erreur 38 ✓ - Forum Mobile
4 réponses
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
7 mars 2023
3 291
Modifié par michel_m le 31/08/2015 à 13:25
Modifié par michel_m le 31/08/2015 à 13:25
bonjour,
Déjà, remplace "integer" par "long", essaies et tu nous dis
Michel
Déjà, remplace "integer" par "long", essaies et tu nous dis
Michel
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
Modifié par ccm81 le 31/08/2015 à 16:43
Modifié par ccm81 le 31/08/2015 à 16:43
Bonjour
Utilises plutôt la fonction combin de la feuille de calcul, qui évitera les factorielles trop grandes, mais tu vas quand même être limité
à 2 147 483 647
Salut à michel en passant
Cdlmnt
Utilises plutôt la fonction combin de la feuille de calcul, qui évitera les factorielles trop grandes, mais tu vas quand même être limité
à 2 147 483 647
Dim c As Long, n As Long, p As Long
n = 5
p = 3
c = Application.WorksheetFunction.Combin(n, p)
Salut à michel en passant
Cdlmnt
ezor
Messages postés
176
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
27 octobre 2016
11
Modifié par ezor le 31/08/2015 à 16:52
Modifié par ezor le 31/08/2015 à 16:52
merci de ta réponse.
J'utilisais déjà Application.WorksheetFunction.Combin() mais j'ia une erreur 400 qui ressort avec ça. Je n'arrive pas à trouver à quoi elle correspond.
C'est pour cela que j'avais tenter de faire ma propre fonction au cas où.
J'utilisais déjà Application.WorksheetFunction.Combin() mais j'ia une erreur 400 qui ressort avec ça. Je n'arrive pas à trouver à quoi elle correspond.
C'est pour cela que j'avais tenter de faire ma propre fonction au cas où.
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
31 août 2015 à 17:10
31 août 2015 à 17:10
Idée 1. Récupères les valeurs dans des variables et regardes leur valeur lorsque ça plante
Idée 2. as tu bien n >= p
Idée 3. Cells(5, 4) = "18" si tu as laissé les guillemets, ça plante
Sinon, envoies la partie concernée de ton fichier via cjoint.com avec les exemples qui plantent
Cdlmnt
Idée 2. as tu bien n >= p
Idée 3. Cells(5, 4) = "18" si tu as laissé les guillemets, ça plante
Sinon, envoies la partie concernée de ton fichier via cjoint.com avec les exemples qui plantent
Cdlmnt
ezor
Messages postés
176
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
27 octobre 2016
11
Modifié par ezor le 1/09/2015 à 09:54
Modifié par ezor le 1/09/2015 à 09:54
dans le sens inverse ;) :
idée 3 : avec ou sans " " pas de changement
idée 2 : je n'ai pas l'impression que le problème vienne de là. J'ai un cas "if p>n" dans ma routine combinaison pour gérer ça
idée 1 : je vais tenter de faire ça, mais il y a beaucoup de variables, ça va me prendre du temps. Je te dis si jamais ça s'approche dangereusement de 9 223 372 036 854 775 807 (le maximum pour un Long!)
PS : 18! < max d'un Long
idée 3 : avec ou sans " " pas de changement
idée 2 : je n'ai pas l'impression que le problème vienne de là. J'ai un cas "if p>n" dans ma routine combinaison pour gérer ça
idée 1 : je vais tenter de faire ça, mais il y a beaucoup de variables, ça va me prendre du temps. Je te dis si jamais ça s'approche dangereusement de 9 223 372 036 854 775 807 (le maximum pour un Long!)
PS : 18! < max d'un Long
ezor
Messages postés
176
Date d'inscription
dimanche 1 mars 2009
Statut
Membre
Dernière intervention
27 octobre 2016
11
Modifié par ezor le 1/09/2015 à 11:28
Modifié par ezor le 1/09/2015 à 11:28
Bon, pour une raison que j'ignore, j'ai une solution qui semble fonctionner même pour des nombres relativement grands. J'ai utilisé ma propre fonction "combinaison" avec pour le calcul des factorielles, Application.fact() ce qui donne le code suivant
Je ne sais pas pourquoi c'est mieux ainsi. J'avais testé avec Application.combin(n,p) et en recodant la fonction factorielle par récursivité.
Je présume que le FACT() de excel est plus optimisé que le miens ou celui dans COMBIN()
Si quelqu'un à une explication je suis preneur.
EDIT : pour info, je peux aller jusqu'à "nombre de question restante" égale à 170 environ. Au dela, j'ai un message d'erreur "Incompatibilité de type". Ça doit dépasser la capactité d'un Long
ezor
'fonction combinaison Public Function combinaison(ByVal p As Long, ByVal n As Long) If p > n Then combinaison = 0 Else combinaison = Application.fact(n) / (Application.fact(p) * Application.fact(n - p)) End If End Function
Je ne sais pas pourquoi c'est mieux ainsi. J'avais testé avec Application.combin(n,p) et en recodant la fonction factorielle par récursivité.
Je présume que le FACT() de excel est plus optimisé que le miens ou celui dans COMBIN()
Si quelqu'un à une explication je suis preneur.
EDIT : pour info, je peux aller jusqu'à "nombre de question restante" égale à 170 environ. Au dela, j'ai un message d'erreur "Incompatibilité de type". Ça doit dépasser la capactité d'un Long
ezor
31 août 2015 à 13:32