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:

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:
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345