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 0x80070643 - Guide
- Erreur 400 invalid_request - Forum MacOS
- Code erreur f3500-32 ✓ - Forum Bbox Bouygues
- Erreur 10016 epson - Forum Imprimante
- Erreur c2002 western union ✓ - Forum Vos droits sur internet
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
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
10851
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 avril 2024
2 404
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
10851
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
16 avril 2024
2 404
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