Gérer erreur d'exécution 13 lors d'une rechercheV (VBA)

Bonjour,

J'ai créé une macro qui permet à l'utilisateur de choisir un lieu afin de créer un nouveau rapport.

Mes lieux sont sous la forme d'une liste d'abréviations que l'utilisateur choisi par le biais d'une combobox.

Lorsque l'utilisateur choisi une abréviation, une rechercheV est alors effectuée afin d'indiquer le nom de la ville qui correspond à l'abréviation.

Private Sub ComboBox1_Change()
Dim villes As String

villes = Application.VLookup(ComboBox1.Value, Sheets("Réglages").Range("N2:O99"), 2, False)
TextBox1.Value = villes

Range("AG3").Value = ComboBox1.Value

End Sub

Toutefois, une erreur se produit lorsque l'abréviation entrée par l'utilisateur via la combobox n'a pas de correspondance avec le nom de la ville recherchée par la RechercheV. J'ai ainsi ce message d'erreur :

191126102807640677

Est-il possible de gérer cette erreur en indiquant via une msgbox que l'abréviation n'est pas valide et de demander à l'utilisateur d'entrer de nouveau, la bonne abréviation.

Merci d'avance pour votre aide,

Baptiste

Bonjour Baptiste,

tu peux vérifier si le compte est 0,

n = Application.CountIf(Sheets("Réglages").Range("N2:N99"), ComboBox1.Value)
if n = 0 then

Bonjour Baptiste, le forum,

Un essai....

Private Sub ComboBox1_Change()
Dim villes As String

villes = Application.VLookup(ComboBox1.Value, Sheets("Réglages").Range("N2:O99"), 2, False)
If IsError(villes) Then msgbox "Aucune correspondance, veuillez recommencer":exit sub
TextBox1.Value = villes

Range("AG3").Value = ComboBox1.Value

End Sub

Cordialement,

Bonjour,

Un essai à tester :

Private Sub ComboBox1_Change()

Dim villes As String

villes = Application.IfError(Application.VLookup(ComboBox1.Value, Sheets("Réglages").Range("N2:O99"), 2, False), "NA")
If villes = "NA" Then 
    MsgBox "Aucune ville correspondante n'a été trouvée !"
Else
    TextBox1.Value = villes
    Range("AG3").Value = ComboBox1.Value
End If

End Sub

Edit : salut xorsankukai et i20100 !

Bonjour à tous,

Encore une autre manière:

Private Sub ComboBox1_Change()
Dim villes As String

   On Error GoTo Pa2ville
   villes = Application.VLookup("toto", Sheets("Réglages").Range("N2:O99"), 2, False)
   TextBox1.Value = villes
   Range("AG3").Value = ComboBox1.Value
   Exit Sub
Pa2ville:
   MsgBox "L'abrévation ne correspond à aucun lieu.", vbCritical
End Sub

Bonjour le fil, bonjour le forum,

J'avais pensé au même code que MaPoire mais je me suis rendu compte qu'une abréviation sans vile ne générait pas une erreur mais du vide. Alors :

Private Sub ComboBox1_Change()
Dim villes As String

villes = Application.VLookup(ComboBox1.Value, Sheets("Réglages").Range("N2:O99"), 2, False)
If villes = "" Then
    MsgBox "L'abréviation n'est pas valide, veuillez réessayez."
    With Me.ComboBox1
        .SelStart = 0
        .SelLength = Len(.Value)
        Exit Sub
    End With
End If
TextBox1.Value = villes
Range("AG3").Value = ComboBox1.Value
End Sub

Bonjour xorsankukai, i20100, Pedro22, ThauThème et MaPoire

Merci pour toutes vos réponses ! J'ai testé et ça fonctionne parfaitement

Est-ce que c'est possible d'effacer le contenu de la combobox et de la textbox après la msgbox d'erreur lorsque l'entrée utilisateur est invalide ?

Merci d'avance

Baptiste

Re,

Pour l'effacement :

Private Sub ComboBox1_Change()
Dim villes As String
   If ComboBox1 = "" Then TextBox1 = "": Exit Sub
   On Error GoTo Pa2ville
   villes = Application.VLookup(ComboBox1.Value, Sheets("Réglages").Range("N2:O99"), 2, False)
   TextBox1.Value = villes
   Range("AG3").Value = ComboBox1.Value
   Exit Sub
Pa2ville:
   MsgBox "L'abrévation '" & ComboBox1 & " ' ne correspond à aucun lieu.", vbCritical
   ComboBox1 = "": TextBox1 = ""
End Sub

Bonsoir MaPoire,

Merci beaucoup pour ton aide, c'est exactement ce dont j'avais besoin !

Je clôture le sujet

Baptiste

Rechercher des sujets similaires à "gerer erreur execution lors recherchev vba"