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.
Il serait bon de nous communiquer le code de la dite fonction et le but recherché ! Incroyable ce que ça aide à répondre !
AV
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
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
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
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
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
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
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
C'est exactement ce que je recherchais ! Merci Alain.
Je continue d'apprendre ...
Apprenti.xls
"AV" <alainPFFFvallon@wanadoo.fr> a écrit dans le message de news:
edKIEwQyGHA.3632@TK2MSFTNGP03.phx.gbl...
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
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