Afficher message d'erreur pour combobox excel
Résolu
malaju
Messages postés
125
Date d'inscription
Statut
Membre
Dernière intervention
-
malaju Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
malaju Messages postés 125 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Sous Excel 2013 j'ai fait un conjugueur de verbes provençaux. Sur la feuil4 (Sesido) se trouve le formulaire de saisie, sur la feuil2 (Verbe) la liste des 14000 verbes référencés avec en regard de chacun les verbes de référence pour la conjugaison. Les autres feuilles (feuil1 (Counjugueson), feuil3 (Indicatiéu), feuil5 (Sujountiéu) et feuil6 (Coundiciounau-Emperatiéu) affichent les conjugaisons des verbes de référence.
Le principe de mon conjugueur est de rentrer un verbe dans la combobox1. Celui-ci est recherché dans la liste de la feuille "verbe" et affiche dans la textbox1 en dessous le verbe de référence. En cliquant sur le bouton adéquat (conjugaison complète, indicatif, subjonctif ou conditionnel-impératif, Excel affiche la conjugaison désirée du verbe de référence (ex : le verbe "coungela" se conjugue comme "abarbela" et en cliquant sur le bouton "Indicatiéu" s'affiche la conjugaison du verbe de référence "abarbela" à tous les temps de l'indicatif).
Tout cela marche parfaitement sauf quand on rentre un verbe qui ne figure pas dans la liste des 14000 verbes. Dans ce cas la textbox1 affiche un verbe de référence pour un verbe proche de celui entré dans la combobox1. J'aimerais quand on entre un verbe erroné que d'une part la textbox1 n'affiche rien et que d'autre part une msgbox apparaisse pour signifier que le verbe n'a pas été trouvé. Voici le code que j'ai fait pour recherche du verbe (qui fonctionne) et affichage de la msgbox (qui ne fonctionne pas) :
"Private Sub ComboBox1_Change()
v = ComboBox1.Text
ComboBox1.Text = UCase(ComboBox1.Text)
If v <> "" Then
With Sheets("Verbe")
Set c = .Columns(2).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
TextBox1.Text = c.Offset(, 1).Value
Else If v <> c Then
MsgBox ("Désolé ! Verbe inconnu. Vérifiez l'orthographe")
ComboBox1.Text = " "
TextBox1.Text = " "
End If
End If
End With
End If
End Sub "
Quelqu'un a-t-il une idée de l'erreur commise et la solution pour y remédier ?
Merci d'avance
Sous Excel 2013 j'ai fait un conjugueur de verbes provençaux. Sur la feuil4 (Sesido) se trouve le formulaire de saisie, sur la feuil2 (Verbe) la liste des 14000 verbes référencés avec en regard de chacun les verbes de référence pour la conjugaison. Les autres feuilles (feuil1 (Counjugueson), feuil3 (Indicatiéu), feuil5 (Sujountiéu) et feuil6 (Coundiciounau-Emperatiéu) affichent les conjugaisons des verbes de référence.
Le principe de mon conjugueur est de rentrer un verbe dans la combobox1. Celui-ci est recherché dans la liste de la feuille "verbe" et affiche dans la textbox1 en dessous le verbe de référence. En cliquant sur le bouton adéquat (conjugaison complète, indicatif, subjonctif ou conditionnel-impératif, Excel affiche la conjugaison désirée du verbe de référence (ex : le verbe "coungela" se conjugue comme "abarbela" et en cliquant sur le bouton "Indicatiéu" s'affiche la conjugaison du verbe de référence "abarbela" à tous les temps de l'indicatif).
Tout cela marche parfaitement sauf quand on rentre un verbe qui ne figure pas dans la liste des 14000 verbes. Dans ce cas la textbox1 affiche un verbe de référence pour un verbe proche de celui entré dans la combobox1. J'aimerais quand on entre un verbe erroné que d'une part la textbox1 n'affiche rien et que d'autre part une msgbox apparaisse pour signifier que le verbe n'a pas été trouvé. Voici le code que j'ai fait pour recherche du verbe (qui fonctionne) et affichage de la msgbox (qui ne fonctionne pas) :
"Private Sub ComboBox1_Change()
v = ComboBox1.Text
ComboBox1.Text = UCase(ComboBox1.Text)
If v <> "" Then
With Sheets("Verbe")
Set c = .Columns(2).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
TextBox1.Text = c.Offset(, 1).Value
Else If v <> c Then
MsgBox ("Désolé ! Verbe inconnu. Vérifiez l'orthographe")
ComboBox1.Text = " "
TextBox1.Text = " "
End If
End If
End With
End If
End Sub "
Quelqu'un a-t-il une idée de l'erreur commise et la solution pour y remédier ?
Merci d'avance
A voir également:
- Afficher message d'erreur pour combobox excel
- Liste déroulante excel - Guide
- Recuperer message whatsapp supprimé - Guide
- Word et excel gratuit - Guide
- Message supprimé whatsapp - Guide
- Message absence thunderbird - Guide
4 réponses
Merci jordane, mais pour l'instant je préfère garder la valeur xlWhole car j'ai trouvé un début de solution à mon problème. J'ai modifié mon code après Else, ce qui donne :
"Private Sub ComboBox1_Change()
v = ComboBox1.Text
ComboBox1.Text = UCase(ComboBox1.Text)
If v <> "" Then
With Sheets("Verbe")
Set c = .Columns(2).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
TextBox1.Text = c.Offset(, 1).Value
Else
TextBox1 = Range("AA1") 'affiche le contenu de la cellule càd rien
MsgBox "MON MESSAGE", vbExclamation, "Titre de la MsgBox"
Me.ComboBox1.SelStart = Len(Me.ComboBox1.Text) 'replace le curseur à la fin du mot entré ds la combo pour pouvoir le modifier
End If
End With
End If"
Ça marche super bien, sauf que je ne m'explique pas pourquoi la MsgBox apparait une deuxième fois quand je clique sur son bouton OK.
"Private Sub ComboBox1_Change()
v = ComboBox1.Text
ComboBox1.Text = UCase(ComboBox1.Text)
If v <> "" Then
With Sheets("Verbe")
Set c = .Columns(2).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
TextBox1.Text = c.Offset(, 1).Value
Else
TextBox1 = Range("AA1") 'affiche le contenu de la cellule càd rien
MsgBox "MON MESSAGE", vbExclamation, "Titre de la MsgBox"
Me.ComboBox1.SelStart = Len(Me.ComboBox1.Text) 'replace le curseur à la fin du mot entré ds la combo pour pouvoir le modifier
End If
End With
End If"
Ça marche super bien, sauf que je ne m'explique pas pourquoi la MsgBox apparait une deuxième fois quand je clique sur son bouton OK.
bonjour yg_be,
J'ai modifié le code en mettant un ' devant Me.ComboBox1.SelStart = Len(Me.ComboBox1.Text) pour que la fonction ne s'exécute pas mais j'ai toujours la même chose
J'ai modifié le code en mettant un ' devant Me.ComboBox1.SelStart = Len(Me.ComboBox1.Text) pour que la fonction ne s'exécute pas mais j'ai toujours la même chose
J'ai encore modifié le code en supprimant l'affichage de la msgbox (MsgBox "MESSAGE", vbExclamation, "TITRE").
Celle-ci est désormais affichée quand je clique sur un des boutons qui me permettent d'afficher le mode de conjugaison du verbe de référence.
Dans le code de chaque module (1 module par bouton donc par mode de conjugaison) j'ai ajouté le code suivant (en gras):
"Sub conjug_indicatif()
Sheets("Indicatiéu").Visible = True
Dim v As String, c As Range
v = Sheets("Sesido").TextBox1.Text
If v <> "" Then
With Sheets("Indicatiéu")
Set c = .Columns(1).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
Application.Goto c, True
End If
End With
Else
MsgBox "MESSAGE", vbExclamation, "TITRE"
With Sheets("Sesido")
.ComboBox1.Text = ""
.Select
End With
Sheets("Indicatiéu").Visible = False
End If
End Sub"
Et là ça marche impec
Celle-ci est désormais affichée quand je clique sur un des boutons qui me permettent d'afficher le mode de conjugaison du verbe de référence.
Dans le code de chaque module (1 module par bouton donc par mode de conjugaison) j'ai ajouté le code suivant (en gras):
"Sub conjug_indicatif()
Sheets("Indicatiéu").Visible = True
Dim v As String, c As Range
v = Sheets("Sesido").TextBox1.Text
If v <> "" Then
With Sheets("Indicatiéu")
Set c = .Columns(1).Find(v, , xlValues, xlWhole)
If Not c Is Nothing Then
Application.Goto c, True
End If
End With
Else
MsgBox "MESSAGE", vbExclamation, "TITRE"
With Sheets("Sesido")
.ComboBox1.Text = ""
.Select
End With
Sheets("Indicatiéu").Visible = False
End If
End Sub"
Et là ça marche impec