Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Ne pas faire apparaître de message d'erreur dans le résultat d'une fonction

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Ma fille m'a demandé de lui résoudre un problème pour son boulot.
Je lui ait fait une fonction qui répond à ses attentes (peut-être que l'on pourrait faire quelque chose de plus élégants pour la série de boucles...).
Seulement voilà, quand l'une des cellules du tableau est vide, la fonction me renvoie (en espagnol) "#¡VALOR!".
Quécrire dans la fonction pour y remédier et qu'à la place de "#¡VALOR!" il n'y ait tout simplement rien (c'est plus joli) ?

Merci d'avance pour toute aide.
 

Pièces jointes

Re : Ne pas faire apparaître de message d'erreur dans le résultat d'une fonction

Bonsoir Magic_Doctor,

En rajoutant une instruction On Error goto ERREUR avant i =1 et une étiquette ERREUR: avant le End Function, ça devrait le faire.
 

Pièces jointes

Re : Ne pas faire apparaître de message d'erreur dans le résultat d'une fonction

Bonjour,

Essayez de remplacer votre code par le code suivant comportant des ajouts signalés par des ///
Code:
Function FindWord(cel1 As Range, cel2 As Range, mot1 As String, mot2 As String, sentence1 As String, sentence2 As String) As String
'Cherche s'il y a des mots donnés dans 2 chaînes de caractères
'- cel1 : la 1ère cellule où se trouve la chaîne de caractères
'- cel2 : la 2ème cellule où se trouve la chaîne de caractères
'- mot1 : le mot que l'on cherche dans la chaîne de caractères de la 1ère cellule "cel1"
'- mot2 : le mot que l'on cherche dans la chaîne de caractères de la 2ème cellule "cel2"
'- sentence1 : le mot qui doit apparaître si les 2 cellules contiennent le mot "mot1"
'- sentence2 : le mot qui doit apparaître si l'une des 2 cellules (ou les 2) contient le mot "mot2"
Dim i As Byte, texte1 As String, texte2 As String, verdict1 As Byte, verdict2 As Byte

On Error GoTo Erreur  '///

texte1 = LCase(cel1.Value): texte2 = LCase(cel2.Value) 'permet de ne pas tenir compte de la casse (majuscules / minuscules)
mot1 = LCase(mot1): mot2 = LCase(mot2) 'permet de ne pas tenir compte de la casse (majuscules / minuscules)
'FindWord2 = "" 'par défaut, le mot n'a pas été trouvé

i = 1
For i = 1 To Len(texte1) - Len(mot1) + 1 'cherche le 1er mot dans la chaîne de la 1ère cellule
    If Mid(texte1, i, Len(mot1)) = mot1 Then verdict1 = 1
Next i
i = 1
For i = 1 To Len(texte2) - Len(mot1) + 1 'cherche le 1er mot dans la chaîne de la 2ème cellule
    If Mid(texte2, i, Len(mot1)) = mot1 Then verdict2 = 1
Next i
i = 1
For i = 1 To Len(texte1) - Len(mot2) + 1 'cherche le 2ème mot dans la chaîne de la 1ère cellule
    If Mid(texte1, i, Len(mot2)) = mot2 Then verdict1 = 2
Next i
i = 1
For i = 1 To Len(texte2) - Len(mot2) + 1 'cherche le 2ème mot dans la chaîne de la 2ème cellule
    If Mid(texte2, i, Len(mot2)) = mot2 Then verdict2 = 2
Next i

FindWord = IIf(verdict1 + verdict2 = 2, sentence1, sentence2)

'////
Exit Function
Erreur:
FindWord = ""
'////
End Function
 
Re : Ne pas faire apparaître de message d'erreur dans le résultat d'une fonction

Bonsoir excfl,

Nos posts se sont croisés,

En effet, j'avais pensé à cette solution, mais je voulais tout régler au sein même de la fonction, afin de n'avoir qu'à écrire celle-ci dans la barre de formules en se prenant le moins possible la tête. Dans la mesure du possible, je suis définitivement plus VBA (même si souvent j'ai du mal à capter) que formules qui font rapidement disjoncter les neurones...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

B
  • Question Question
Réponses
2
Affichages
2 K
butagaz_girl
B
H
Réponses
5
Affichages
1 K
HELCOU
H
S
Réponses
16
Affichages
14 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…