ComboBox + Touche "Entrée"

Bonjour, j'espère que vous allez bien :)

J'ai actuellement un petit soucis de programmation, je vais essayer de le résumer.

J'ai crée une ComboBox qui s'appelle ComboBox_Nom_Entreprise. Dans celle-ci, un utilisateur peut entrer le nom d'une entreprise. Si cette dernière se trouve dans la feuille Excel "Entreprises" (dans laquelle il y a aussi d'autres données comme l'adresse, ville, code postal, secteur, taille), alors les informations de l'entreprise sont affichées automatiquement dans des TextBox et l'utilisateur n'a pas besoin d'appuyer sur la touche Entrée.

En revanche, et mon problème est là, si l'utilisateur entre une entreprise qui n'existe pas dans la feuille "Entreprises", alors il doit appuyer sur la touche Entrée du clavier, et j'aimerais qu'un MsgBox s'affiche pour lui demander s'il souhaite inscrire cette nouvelle entreprise dans la feuille "Entreprises" (avec ses données, etc.).

J'ai écrit le code suivant :

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Private Sub ComboBox_Nom_Entreprise_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Dim wb As Workbook
Dim ws_Entreprises As Worksheet
Dim rg_Adresse As Range
Dim rg_Ville As Range
Dim rg_Code_Postal As Range
Dim rg_Secteur As Range
Dim rg_Taille As Range
Dim nb_Entreprises As Double

Set wb = ThisWorkbook
Set ws_Entreprises = wb.Worksheets("Entreprises")

ws_Entreprises.Activate

nb_Entreprises = ws_Entreprises.Cells(Rows.Count, 1).End(xlUp).Row
ws_Entreprises.Names.Add Name:="Nom", RefersTo:="=A2:A" & nb_Entreprises & ""

Dim ln_nom As Double
Dim verif As Boolean
Dim valeur_cherchee As String

valeur_cherchee = ComboBox_Nom_Entreprise.Value

If KeyCode = 13 Then

If valeur_cherchee <> ws_Entreprises.Cells.Find(what:=valeur_cherchee, lookat:=xlWhole, searchorder:=xlByColumns) Then

If MsgBox("Votre entreprise n'est pas repertoriee dans notre base de donnees." & Chr(10) & "Voulez-vous l'y ajouter ?", 32 + 4, "Nouvelle entreprise") = 6 Then

With ws_Entreprises
.Cells(nb_Entreprises + 1, 1).Value = ComboBox_Nom_Entreprise.Value
.Cells(nb_Entreprises + 1, 2).Value = TextBox_Adresse.Value
.Cells(nb_Entreprises + 1, 3).Value = TextBox_Ville.Value
.Cells(nb_Entreprises + 1, 4).Value = TextBox_Code_Postal.Value
.Cells(nb_Entreprises + 1, 5).Value = ComboBox_Secteur.Value
If OptionButton_Grande_Entreprise.Value = True Then
.Cells(nb_Entreprises + 1, 6).Value = "TRUE"
ElseIf OptionButton_Petite_Entreprise.Value = True Then
.Cells(nb_Entreprises + 1, 6).Value = "FALSE"
End If
End With

End If

End If

End If

End Sub

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Je peux alors écrire "Fnac" par exemple (qui ne se trouve pas dans ma feuille Excel) mais lorsque j'appuie sur la touche Entrée, alors le debogueur me met un bug à la ligne suivante :

If valeur_cherchee <> ws_Entreprises.Cells.Find(what:=valeur_cherchee, lookat:=xlWhole, searchorder:=xlByColumns) Then

avec marqué "erreur d'exécution '91' : Variable objet ou variable de bloc With non définie"

Si vous avez des réponses, je vous en remercie d'avance ! :)

(Et j'aime beaucoup votre site, je trouve que c'est très bien expliqué ;))

Bonjour,

Find "ne colle pas" dans ce contexte :

ws_Entreprises.Cells.Find

A+

Bonjour, galopin01,

Valeur_cherchee=string (alphanumerique)

Resultat de Find=objet Range (cellule)

Donc :

dim trouve as range

Set trouve=find

If trouve is nothing then "l'entreprise n'est pas connue"

Attention ! C'est simplifié !

@ bientôt

LouReeD

Rechercher des sujets similaires à "combobox touche entree"