Bonjour,

Dans un programme VBA destiné à insérer des formules de calcul dans un document Excel, j'ai utilisé le code suivant (extrait) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
Dim Quote
Dim Formule As String
Dim Formule2 as String
 
Quote = """"
 
With maFeuille
Formule = "=SUMPRODUCT((BJ" & CStr(Debut) & ":BJ" & CStr(Fin) & "=" & Quote & "-1" & Quote & ")*(BN" & CStr(Debut) & ":BN" & CStr(Fin) & ">0))" 
Formule2 = "=SUMPRODUCT(BJ" & CStr(Debut) & ":BJ" & CStr(Fin) & "=" & Quote & "-1" & Quote & ")"
.Range(sCol05 & Fin + indexLigne).Formula = Formule & "/" & Formule2
.Range(sCol05 & Fin + indexLigne).NumberFormat = "0.00%"
.Range(sCol05 & Fin + indexLigne).Font.ColorIndex = 3  ' Rouge
End With
Le but de la formule est d'effectuer le calcul suivant :
Compter le nombre de lignes où la colonne BJ contient "-1" et où la colonne BN contient une valeur > 0.
Diviser ce résultat par le nombre de lignes où la colonne BJ contient "-1"

Si je n'utilise pas le contenu de Formule 2 en remplaçant la ligne qui affecte la formule par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
.Range(sCol05 & Fin + indexLigne).Formula = Formule
alors j'obtiens un résultat numérique cohérent.

Par contre, si je garde la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
.Range(sCol05 & Fin + indexLigne).Formula = Formule & "/" & Formule2
j'obtiens un message indiquant une division par zéro dans la formule, ce qui semble prouver que la formule contenue dans Formule2 retourne 0.

Pouvez vous m'indiquer d'où vient le problème, car il me semble pourtant que le contenu de Formule2 est une formule tout à fait légitime (pour info, SUMPRODUCT correspond en français à SOMMEPROD) ?

Merci de votre aide.