Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

#VALEUR! avec une fonction personnelle

4 réponses
Avatar
Apprenti.xls
Bonjour à tous,

Je ne sais pas comment traiter le résultat #VALEUR! que me retourne une
fonction personnelle que j'ai créée avec une recherche dans une matrice.
C'est le résulat que j'obtiens s'il n'y a pas d'élément commun.
J'ai beau lui dire if résultat="" then ..., voire même passer par
iserror(...), rien à faire !
L'un d'entre vous saurait-il comment traiter le problème ?
Je vous remercie toutes et tous par avance.

J'apprends, j'apprends ...

4 réponses

Avatar
AV
Il serait bon de nous communiquer le code de la dite fonction et le but
recherché !
Incroyable ce que ça aide à répondre !

AV
Avatar
Apprenti.xls
L'objet de mon intervention n'est pas très clair ... Je reprends :

J'ai créé une fonction personnelle =R(arg1;arg2;arg3) dans un fichier
perso.xla dans la liste des macros complémentaires pour m'en servir dans
n'importe quelle cellule de n'importe quelle feuille de n'importe quel
classeur Excel.

Voici son code :
Public Function R(Valeur_commune As Variant, Colonne_Valeurs_communes As
Range, Colonne_recherchée As Range) As Variant
Application.Volatile
R = Colonne_recherchée.Item(Application.Match(Valeur_commune,
Colonne_Valeurs_communes, 0))
Application.Calculate
End Function

en d'autres termes, une fonction équivalente à :
=INDEX(Colonne_recherchée;EQUIV(Valeur_commune ;Colonne_Valeurs_communes;0))

C'est une fonction qui fonctionne parfaitement lorsqu'il y a un élément à
ramener (ce que je souhaite), et elle affiche #VALEUR! lorsqu'il n'y a pas
d'élément commun, tout comme elle ramenerait #N/A avec un index-équiv
traditionnel, logique. Jusque là, je comprends, s'il n'y a pas d'élément
commun, la fonction ne peut rien ramener.
Là où j'aurais besoin des lumières des uns ou des autres sur le forum, c'est
pour agir comme si j'écrivais dans la feuille :
=SI(ESTNA(D7);"Erreur";D7)

Je coince avec if iserror ou autre err.number ...

Si une bonne âme pouvait m'aider, je lui en serait reconnaissant. En
espérant avoir été plus explicite et remerciant Alain de m'avoir incité à
être plus clair...
J'apprends, j'apprends ...
Cordialement.
Apprenti.xls
Avatar
AV
Sous réserve de compréhension du résultat que tu veux obtenir...


Public Function R(Valeur_commune As Variant, Colonne_Valeurs_communes As Range,
Colonne_recherchée As Range) As Variant
Application.Volatile
test = Application.Match(Valeur_commune, Colonne_Valeurs_communes, 0)
If Not IsNumeric(test) Then
R = "Erreur"
Else: R = Colonne_recherchée.Item(test)
End If
End Function

AV
Avatar
Apprenti.xls
C'est exactement ce que je recherchais ! Merci Alain.
Je continue d'apprendre ...
Apprenti.xls

"AV" a écrit dans le message de news:

Sous réserve de compréhension du résultat que tu veux obtenir...


Public Function R(Valeur_commune As Variant, Colonne_Valeurs_communes As
Range, Colonne_recherchée As Range) As Variant
Application.Volatile
test = Application.Match(Valeur_commune, Colonne_Valeurs_communes, 0)
If Not IsNumeric(test) Then
R = "Erreur"
Else: R = Colonne_recherchée.Item(test)
End If
End Function

AV