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 :
Debut et Fin sont des valeurs numériques.
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%"
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 :
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 =IF(SUMPRODUCT((DI362:DI382>0)*(DG362:DG382="IRP"))>0;(SUM(CC362:CC382)-SUM(DI362:DI382))/SUMPRODUCT((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.
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)
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 :
c'est à dire quand j'affecte la macro à une case de ma feuille Excel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 .Range(sColAI_IRP & Fin + indexLigne).Formula = Formule
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 ...
Partager