[VBA] Erreur Automation - Défaillance irrémédiable
Bonjour à tous et à toutes,
J'ai écumé le net à la recherche d'une réponse à mon problème plutôt particulier. Merci par avance pour votre aide et soutient!
Donc le soucis : à chaque ouverture de fichier Excel, j'ai une "Erreur Automation - Défaillance irrémédiable" qui me renvoie vers mon unique macro, une fonction personnalisée. Quand je navigue dans VBA à cette occasion, je vois dans l'explorateur de projet qu'il rajoute des feuilles bleues.
J'ai mis à plat ma fonction pour qu'elle soit le plus propre possible, j'ai déclaré un maximum de variables. Le problème cependant ne se produit que sur mon ordinateur du boulot. Le personnel lui, gère bien et ne provoque pas d'erreur au démarrage (même version Windows 7 + Excel 2010).
Comme il s'agit d'un fichier plutôt confidentiel, je ne peux pas trop me permettre de vous faire passer le fichier entier, ceci étant, je peux transmettre ci-dessous, ma fonction personnalisée dans l'espoir que vous puissiez trouver le problème. J'ai fichu des commentaires de partout pour qu'une personne qui passe après moi soit capable de reprendre le code.
Merci!
Public Function RENTB(OUT As Double, PRD As Double, RENT As Double, NBJ As Integer, PEX As Double, CDP As Double, PDP As Double) As Double
'Fonction personnalisée qui permet de calculer le nombre d'externes et de demi-pensionnaires nécessaires pour atteindre une rentabilité
'optimale
'by MrBonobo
Application.Volatile 'Permet à l'application de s'actualiser constamment
'OUT = Charges totales du stage // PRD = Produit total du stage // Rent = Rentabilité courante du stage
'NBJ = Nombre de jours du stage // PEX = Produit par externe et par stage // CDP = Coût des demi-pensionnaires par inscrit et par stage
'PDP = Produit des demi-pensionnaires par inscrit et par stage
Dim RENTID As Double
Dim NBEX As Double
Dim NBDP As Double
RENTID = 0.6 'Valeur fixe à déterminer de la rentibilité idéale du stage
NBEX = 0 'Valeur déterminée plus loin et variable qui stocke le nombre idéal d'externes pour une rentabilité optimale
NBDP = 0 'Valeur déterminée plus loin et variable qui stocke le nombre idéal de demi-pensionnaire pour une rentabilité optimale
If RENT < RENTID Then 'Teste si la rentabilité courante du stage est déjà optimale
'Résolution d'une équation qui vise à déterminer combien de produit il manque pour atteindre une rentabilité optimale
'RENTB = Stockage du produit restant à accomplir
RENTID = RENTID - 1 'Le calcul de base est le suivant ( RENT = 1-(Charges totales / Produits totaux)). La rentabilité
'que l'on souhaite atteindre est connue, les charges également, reste à déterminer le produit total optimal.
'On retire le "1" de l'équation par cette opération.
RENTB = OUT / RENTID 'On divise ensuite le OUT par la rentabilité idéale de laquelle on a soustrait 1 pour obtenir le résultat.
RENTB = RENTB * (-1) 'Le résultat étant négatif, on le transforme en positif
RENTB = RENTB - PRD 'RENTB à ce stade stocke le produit idéal absolu qu'il faudrait obtenir, la soustraction avec le produit courant
'permet de savoir combien il reste à accomplir pour obtenir une rentabilité optimale
NBEX = RENTB / PEX 'Déterminer en divisant le produit d'un externe par le produit restant à accomplir, le nombre
'd'inscrits externes à avoir
CDP = CDP * NBJ 'Détermine les charges d'un demi-pensionnaire sur l'ensemble du stage
PDP = PDP - CDP 'Soustrait les charges au produit pour obtenir un produit net par stagiaire demi-pensionnaire
NBDP = RENTB / PDP 'Déterminer en divisant le produit d'un demi-pensionnaire par le produit restant à accomplir, le nombre
'd'inscrits demi-pensionnaires à avoir
RENTB = (NBDP + NBEX) / 2 'Moyenne du nombre d'externe et demi-pensionnaire à avoir pour atteindre une rentabilité optimale
Else
RENTB = 999 'Si rentabilité optimale, la formule renvoie ce texte
End If
End Function