Bonjour,

C'est encore moi avec une application VBA qui doit insérer une formule dans une case d'un fichier Excel.

Mon code est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
  Formule2 = "SUMPRODUCT((DI" & CStr(Debut) & ":DI" & CStr(Fin) & ">0)*(DG" & CStr(Debut) & ":DG" & CStr(Fin) & "=" & Quote & "IRP" & Quote & "))"
                Formule3 = "(SUM(CC" & CStr(Debut) & ":CC" & CStr(Fin) & ")-SUM(DI" & CStr(Debut) & ":DI" & CStr(Fin) & "))/" & Formule2
                Formule = "=IF(" & Formule2 & ">0;" & Formule3 & ";0)"
                .Range(sColAI_IRP & Fin + indexLigne).Formula = Formule
                .Range(sColAI_IRP & Fin + indexLigne).NumberFormat = "0.00%"
Debut et Fin sont des valeurs numériques.
Formule, Formule2 et Formule3 sont des chaines de caractères.
sColAI_IRP est une chaine de caractères qui vaut "BO"

Le code ci-dessus construit (dans la variable Formule) la macro suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
=IF(SUMPRODUCT((DI362:DI382>0)*(DG362:DG382="IRP"))>0;(SUM(CC362:CC382)-SUM(DI362:DI382))/SUMPRODUCT((DI362:DI382>0)*(DG362:DG382="IRP"));0)
J'ai copié la macro dans le bloc note, j'ai remplacé SUMPRODUCT par SOMMEPROD, SUM par SOMME et IF par SI. J'obtiens :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
=SI(SOMMEPROD((DI362:DI382>0)*(DG362:DG382="IRP"))>0;(SOMME(CC362:CC382)-SOMME(DI362:DI382))/SOMMEPROD((DI362:DI382>0)*(DG362:DG382="IRP"));0)
et si je colle cette version "traduite" dans une case de mon fichier Excel, elle marche très bien.

Malheureusement, quand j'exécute le code VBA donné ci-dessus (qui construit la même macro dans la variable Formule, avec les noms des fonctions en anglais), j'ai une erreur 1004 ("Erreur définie par l'application ou l'objet") qui se déclenche sur la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
.Range(sColAI_IRP & Fin + indexLigne).Formula = Formule
c'est à dire quand j'affecte la macro à une case de ma feuille Excel.
Pourtant, j'ai vérifié qu'elle marchait très bien quand je la colle moi même dans un fichier Excel.

Si vous avez une idée qui expliquerait ce comportement, merci de me la soumettre. Pour ma part, j'y ai passé plus d'une heure sans succès ...