Erreur 400, trop de calculs?
Résolu
ezor
Messages postés
177
Date d'inscription
Statut
Membre
Dernière intervention
-
ezor Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
ezor Messages postés 177 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Erreur 400, trop de calculs?
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Canon f166 400 - Forum Logiciels
- Erreur t32 ✓ - Forum Livebox
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
4 réponses
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
ezor
Messages postés
177
Date d'inscription
Statut
Membre
Dernière intervention
11
merci pour ta réponse, effectivement, c'est plus "prudent" avec Long, mais le problème reste le même.
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
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
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
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