Fonction personnalisées renvoies #VALEUR à l'ouverture

Etienne2323

XLDnaute Impliqué
Bonjour à tous,
dans le cadre d'un projet au bureau, je dois réaliser une formule Excel qui me permettra de masquer des lignes en fonction de certains critères. Ma problématique vient du fait que tout fonctionne tant que je ne ferme pas le classeur. Dès que je le ferme et que je l'ouvre par la suite, toutes mes formules prennent alors comme résultat "#VALEUR". Je me demande comment remédier à ce problème.

Je vous présente ici ma situation.Je ne crois pas que ce soit réellement pertinent, mais peut-être ... on ne sais jamais !

Donc, le premier de ces critères concerne la couleur de la cellule. Suite à mes recherches, je n'ai trouvé aucune formule qui pouvait faire ce travail. J'ai donc essayé de construire une fonction personnalisée qui fonctionne très bien. La voici.

Code:
Function LaCouleur(MaPlage As Range) As Long
LaCouleur = MaPlage.Interior.ColorIndex
End Function
Le 2e critère revient à chercher un mot dans une colonne. La ligne de départ est la ligne où se trouve ma formule et dans mon cas, il faut trouver le prochain total de catégorie. Pour ce faire, j'ai construit une seconde fonction personnalisée qui fera une recherche sur le mot "Total " dans ma colonne. (J'ai n'ai appris que dernièrement comment faire alors pourquoi ne pas abuser du concept;) Salutations à ROGER2327 au passage !)

Code:
Function Ligne_de_recherche(Mot_recherche As String, Colonne_Recherche As Integer) As Integer
Dim Mot As String
Dim La_ligne As Integer

Ligne_Recherche = ActiveCell.Row
DerniereLigne = Cells(65536, Colonne_Recherche).End(xlUp).Row

Set Lig = Range(Cells(Ligne_Recherche, Colonne_Recherche), Cells(DerniereLigne, Colonne_Recherche)).Find(Mot_recherche, LookIn:=xlValues, LookAt:=xlPart)
If Not Lig Is Nothing Then Ligne_de_recherche = Lig.Row

End Function
Cela nous mène donc à la formule que j'utilise pour répondre à mes critères.

Code:
=SI(ET(ADRESSE(Ligne_de_recherche("Total ";11);13)=0;LaCouleur(K54)=15);0;SI(ET(LaCouleur(K54)=15;K55="");0;SI(OU(LaCouleur(K54)=15;LaCouleur(K54)=37;M54>0);1;0)))
Tout ça fontionne très bien jusqu'à ce que, comme je l'ai mentionné plus haut, je ferme le classeur et que je l'ouvre de nouveau.

Quoi faire pour remédier à ça ??

Encore une fois, merci beaucoup pour votre aide et votre temps !

Cordialement,

Étienne
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Fonction personnalisées renvoies #VALEUR à l'ouverture

Bonjour Etienne2323 :),
essaie d'ajouter dans toutes tes fonctions
Code:
Application.Volatile
Ça devrait fonctionner ;).
Bon courage :cool:
 

Etienne2323

XLDnaute Impliqué
Re : Fonction personnalisées renvoies #VALEUR à l'ouverture

Bonjour JNP, le forum,
merci pour votre réponse. Ça fonctionne à 95%. J'ai toujours l'erreur #VALEUR quand j'ouvre mon classeur. Par contre, dès que je fais une modification à la première formule, lors toutes les formules fonctionnent et l'erreur disparait.

Est-ce qu'il y a une explication à ce phénomène ?

Merci encore !

Étienne
 

JNP

XLDnaute Barbatruc
Re : Fonction personnalisées renvoies #VALEUR à l'ouverture

Re :),
Essaie d'ajouter dans ThisWorkbook
Code:
Private Sub Workbook_Open()
Calculate
End Sub
Tu gagneras peut-être les 95% ;).
Le problème est qu'il faut "stimuler" la fonction. Application.Volatile lui signale que chaque modification de cellule peux impacter sur son résultat. D'où recalcul, mais aussi possibilité de lourdeur si elle est utilisée de très nombreuses fois :rolleyes:.
Bon courage :cool:
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas