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

On Error Resume Next

  • Initiateur de la discussion Initiateur de la discussion flyjodel
  • Date de début Date de début

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 !

flyjodel

XLDnaute Junior
Bonjour à tous,

malgré quelques lectures, je bloque sur l'utilisation d'une fonction venant de la feuille de calcul:
WorksheetFunction.Find

quand le terme est trouvé, il n'y a pas de problème... seulement quand le terme n'est pas trouvé, la fonction WorksheetFunction.Find génère une erreur et je n'arrive pas à la shunter. Je suppose qu'il faut utiliser la formulation On Error Resume Next, mais je ne sais pas quoi en faire.

Pouvez-vous m'aider ?

question subsidiaire : existe-t'il une fonction dans VBA qui m'affranchisse de l'utilisation de la fonction WorksheetFunction.Find qui ne me semble pas très propre (à l'issue je dois l'utiliser avec des chaînes de 200 caractères sur un fichier de 75.000 lignes)

(j'ai joint un fichier avec la macro)
Merci beaucoup, et bon week-end !
Michel

Code:
Sub bidouille()
    Dim DansTexte, TexteCherche, Resultat As String
    Dim Debut, Fin As Integer

' Entrée de la chaîne recherchée
    TexteCherche = InputBox("Chaine : ", "Entrez la chaîne recherchée")
' Récupération de la chaîne de caractères dans laquelle la recherche s'opère
    DansTexte = Cells(1, 1).Value
    
' position du début de la chaîne recherchée dans l'expression
    Debut = WorksheetFunction.Find(TexteCherche, DansTexte)
' position de la fin du mot (premier espace suivant)
    Fin = WorksheetFunction.Find(" ", DansTexte, Debut)
' extraction du mot
    Resultat = Mid(DansTexte, Debut, Fin - Debut)

    MsgBox ("-" & Resultat & "-")

End Sub
 

Pièces jointes

Re : On Error Resume Next

Oh, pardonnez mon intrusion, mais j'ai trouvé, il faut placer On Error Resume Next AVANT la commande qui risque de bloquer l'exécution du code.

Par contre, est-il possible de placer cette fonction au début du code, une fois pour toutes pour éviter de le mettre à chaque ligne ?

Merci
 
Re : On Error Resume Next

Bonjour,

Voici un bon lien (en anglais) qui explique l'utilisation de "on error"
Error Handling In VBA

En résumé, tu peux avoir une seule instance de "on error ..." dans ta macro à la fois. Par défaut c'est "on error goto 0". Si tu places "On error resume next" en début de ta macro sans jamais ajouter d'autres "on error ..." dans ta macro, tu obliges Excel à poursuivre l'exécution même s'il y a des erreurs (ce qui n'est pas toujours voulu).

Tu n'es donc pas obligé de le même à chaque ligne si tu le mets au début.
 
Re : On Error Resume Next

Bonjour le fil 🙂, Tout bêtement Range.Find, en t'invitant à consulter l'aide VBA à ce niveau, sachant en plus qu'elle autorise FindNext pour aller chercher la valeur suivante, ce que ne fait pas WorksheetFunction.Find 🙄...
Bon dimanche 😎
 
- 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

Réponses
3
Affichages
3 K
Compte Supprimé 979
C
Réponses
22
Affichages
4 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…