Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
[COLOR="DarkSlateGray"][B] For i = TopBound To N
num = num * i
Next i
For i = 1 To LowBound
div = div * i
Next i[/B][/COLOR]
Ces boucles peuvent rapidement provoquer un dépassement de capacité.
En fait (en supposant que P>=N/2), vous calculez séparément
num = (P+1)*(P+2)* ... *(N-1)*N
et
div = 1*2* ... *(N-P-1)*(N-P)
(c'est-à-dire (N-P)!), puis vous divisez num par div.
Pour éviter d'obtenir de trop grands nombres, vous pouvez réorganiser le calculs en couplant les deux boucles pour travailler avec des résultats intermédiaires les plus petits possible et calculer :
[COLOR="DarkSlateGray"][B] ComBina = 1
For i = LowBound To 1 Step -1
ComBina = ComBina * (N - LowBound + i) / i
Next i[/B][/COLOR]
Il faut bien entendu que ComBina soit de type Double.
En faisant cela, vous pourrez constater que les tests du début de procédure deviennent inutiles. En les supprimant, vous obtiendrez :
Code:
[COLOR="DarkSlateGray"][B]Function ComBina(ByVal N As Long, ByVal P As Long) As Double
Dim LowBound As Long
Dim i As Integer
LowBound = WorksheetFunction.Min(P, N - P)
ComBina = 1
For i = LowBound To 1 Step -1
ComBina = ComBina * (N - LowBound + i) / i
Next i
End Function[/B][/COLOR]
qui est très proche de la procédure que j'ai utilisée, dès lors qu'on en élimine le calcul logarithmique :
Code:
[COLOR="DarkSlateGray"][B]Function ComBin2(N, P)
Application.Volatile
Dim i As Long, expo As Long
ComBin2 = 1
On Error GoTo E
N = Int(N)
P = Int(P)
P = WorksheetFunction.Min(P, N - P)
For i = P To 1 Step -1
ComBin2 = ComBin2 * (N - P + i) / i
Next i
S: On Error GoTo 0
Exit Function
E: ComBin2 = "#NOMBRE!": Resume S
End Function[/B][/COLOR]
En espérant que ces considérations vous soient utiles...
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.