UserForm Recherche dans une colonne avec menu déroulant

Le
Cyril DUPONT
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ qui se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien, chienne, chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et pouvoir
en choisir une afin d'afficher les autres données de ma base

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper le nom
exact recherché) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la même valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value) & "*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive, "A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive, "B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive, "C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive, "D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive, "E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive, "F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive, "G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Youky
Le #5011031
Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien, chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper le nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value) & "*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive, "A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive, "C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive, "G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--


Cyril DUPONT
Le #5010871
Merci Youki c'est exactement ce que je "cherchais" ^^

Par contre j'ai un autre souci du coup je n'arrive pas à adapter ce que
j'avais récupéré pour faire afficher les données correspondants au mot
recherché.
Je n'ai jamais utilisé une ListBox..
En fait j'aimerais que quand je sélectionne un mot dans la ListBox ça
m'affiche dans mes Textbox les infos (situées dans les colonnes adjacentes)
de la même ligne.

J'ai du mal à m'exprimer ne connaissant pas les termes exact de ce que je
cherche à faire mais j'espère que tu m'auras compris...

Merci d'avance pour ton aide.

--Cyril--



Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien, chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper le nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value) & "*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive, "A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive, "C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive, "G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--







Youky
Le #5018551
Toujours la liste nommée "mylist"
lig= Appli.......lieu de recherche
mynom=un textbox et Cells(lig, 1) 1 étant le N° de colonne
Tu as tout pour réussir
Youky (avec un "y" à la fin)

Private Sub mylist_Click()
If Me.mylist.ListCount = 0 Then Exit Sub
nom = Me.mylist.List(Me.mylist.ListIndex)
On Error Resume Next
lig = Application.Match(nom, Feuil1.Range("B2:B65000"), 0) + 1
If Err <> 0 Then Err = 0: Me.mylist.Clear: Exit Sub
Me.mynom.Text = Feuil1.Cells(lig, 1) & " " & Feuil1.Cells(lig, 2)
End Sub

"Cyril DUPONT" message de news:
Merci Youki c'est exactement ce que je "cherchais" ^^

Par contre j'ai un autre souci du coup je n'arrive pas à adapter ce que
j'avais récupéré pour faire afficher les données correspondants au mot
recherché.
Je n'ai jamais utilisé une ListBox..
En fait j'aimerais que quand je sélectionne un mot dans la ListBox ça
m'affiche dans mes Textbox les infos (situées dans les colonnes
adjacentes)
de la même ligne.

J'ai du mal à m'exprimer ne connaissant pas les termes exact de ce que je
cherche à faire mais j'espère que tu m'auras compris...

Merci d'avance pour ton aide.

--Cyril--



Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans
une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ
qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien, chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper le
nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value) &
"*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive,
"A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive,
"C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive,
"G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--









Cyril DUPONT
Le #5018511
Merci merci Youky et excuse moi d'avoir écorché ton pseudo...

Oserais-je encore une question ?

Le code fonctionne bien si tous les nom sont différents, par contre quand il
existe des doublons, même si les données qui vont avec le nom sélectionné
sont différentes cela ne m'affiche les valeurs uniquement pour le premier nom
et pas pour les autres... Malgrés que je puisse les sélectionner dans la
listbox car ils apparaissent...

Saurais tu d'ou cela provient ?

Merci de passer du temps sur mes questions...

--Cyril--



Toujours la liste nommée "mylist"
lig= Appli.......lieu de recherche
mynom=un textbox et Cells(lig, 1) 1 étant le N° de colonne
Tu as tout pour réussir
Youky (avec un "y" à la fin)

Private Sub mylist_Click()
If Me.mylist.ListCount = 0 Then Exit Sub
nom = Me.mylist.List(Me.mylist.ListIndex)
On Error Resume Next
lig = Application.Match(nom, Feuil1.Range("B2:B65000"), 0) + 1
If Err <> 0 Then Err = 0: Me.mylist.Clear: Exit Sub
Me.mynom.Text = Feuil1.Cells(lig, 1) & " " & Feuil1.Cells(lig, 2)
End Sub

"Cyril DUPONT" message de news:
Merci Youki c'est exactement ce que je "cherchais" ^^

Par contre j'ai un autre souci du coup je n'arrive pas à adapter ce que
j'avais récupéré pour faire afficher les données correspondants au mot
recherché.
Je n'ai jamais utilisé une ListBox..
En fait j'aimerais que quand je sélectionne un mot dans la ListBox ça
m'affiche dans mes Textbox les infos (situées dans les colonnes
adjacentes)
de la même ligne.

J'ai du mal à m'exprimer ne connaissant pas les termes exact de ce que je
cherche à faire mais j'espère que tu m'auras compris...

Merci d'avance pour ton aide.

--Cyril--



Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans
une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ
qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien, chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper le
nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value) &
"*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive,
"A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive,
"C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive,
"G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--














Youky
Le #5018291
A rectifier toujours le lieu "Feuil1....
le Msgbox renvoie le N° de ligne
donc exemple
Textbox5.textþuil1.cells(k,1):textbox6.textþuil1.cells(k,2).......
Dans la précédente macro supprime la ligne
'Me.mylist.Selected(0) = True
Youky

Private Sub mylist_Click()
For k = 0 To mylist.ListIndex
If mylist.List(k) = mylist.List(mylist.ListIndex) Then a = a + 1
Next
For k = 2 To Feuil1.[B65536].End(3).Row
If Feuil1.Cells(k, 2) = mylist.List(mylist.ListIndex) Then
b = b + 1
If a = b Then
MsgBox k: Exit Sub ' k indique le N° ligne
End If
End If
Next
End Sub

"Cyril DUPONT" message de news:
Merci merci Youky et excuse moi d'avoir écorché ton pseudo...

Oserais-je encore une question ?

Le code fonctionne bien si tous les nom sont différents, par contre quand
il
existe des doublons, même si les données qui vont avec le nom sélectionné
sont différentes cela ne m'affiche les valeurs uniquement pour le premier
nom
et pas pour les autres... Malgrés que je puisse les sélectionner dans la
listbox car ils apparaissent...

Saurais tu d'ou cela provient ?

Merci de passer du temps sur mes questions...

--Cyril--



Toujours la liste nommée "mylist"
lig= Appli.......lieu de recherche
mynom=un textbox et Cells(lig, 1) 1 étant le N° de colonne
Tu as tout pour réussir
Youky (avec un "y" à la fin)

Private Sub mylist_Click()
If Me.mylist.ListCount = 0 Then Exit Sub
nom = Me.mylist.List(Me.mylist.ListIndex)
On Error Resume Next
lig = Application.Match(nom, Feuil1.Range("B2:B65000"), 0) + 1
If Err <> 0 Then Err = 0: Me.mylist.Clear: Exit Sub
Me.mynom.Text = Feuil1.Cells(lig, 1) & " " & Feuil1.Cells(lig, 2)
End Sub

"Cyril DUPONT" message de news:
Merci Youki c'est exactement ce que je "cherchais" ^^

Par contre j'ai un autre souci du coup je n'arrive pas à adapter ce que
j'avais récupéré pour faire afficher les données correspondants au mot
recherché.
Je n'ai jamais utilisé une ListBox..
En fait j'aimerais que quand je sélectionne un mot dans la ListBox ça
m'affiche dans mes Textbox les infos (situées dans les colonnes
adjacentes)
de la même ligne.

J'ai du mal à m'exprimer ne connaissant pas les termes exact de ce que
je
cherche à faire mais j'espère que tu m'auras compris...

Merci d'avance pour ton aide.

--Cyril--



Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans
une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ
qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien,
chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper
le
nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée
trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la
même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value)
&
"*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive,
"A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive,
"C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive,
"G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--
















Cyril DUPONT
Le #5018121
Je te remercie beaucoup pour ton aide précieuse !
Ca fonctionne à merveille !!!

--Cyril--



A rectifier toujours le lieu "Feuil1....
le Msgbox renvoie le N° de ligne
donc exemple
Textbox5.textþuil1.cells(k,1):textbox6.textþuil1.cells(k,2).......
Dans la précédente macro supprime la ligne
'Me.mylist.Selected(0) = True
Youky

Private Sub mylist_Click()
For k = 0 To mylist.ListIndex
If mylist.List(k) = mylist.List(mylist.ListIndex) Then a = a + 1
Next
For k = 2 To Feuil1.[B65536].End(3).Row
If Feuil1.Cells(k, 2) = mylist.List(mylist.ListIndex) Then
b = b + 1
If a = b Then
MsgBox k: Exit Sub ' k indique le N° ligne
End If
End If
Next
End Sub

"Cyril DUPONT" message de news:
Merci merci Youky et excuse moi d'avoir écorché ton pseudo...

Oserais-je encore une question ?

Le code fonctionne bien si tous les nom sont différents, par contre quand
il
existe des doublons, même si les données qui vont avec le nom sélectionné
sont différentes cela ne m'affiche les valeurs uniquement pour le premier
nom
et pas pour les autres... Malgrés que je puisse les sélectionner dans la
listbox car ils apparaissent...

Saurais tu d'ou cela provient ?

Merci de passer du temps sur mes questions...

--Cyril--



Toujours la liste nommée "mylist"
lig= Appli.......lieu de recherche
mynom=un textbox et Cells(lig, 1) 1 étant le N° de colonne
Tu as tout pour réussir
Youky (avec un "y" à la fin)

Private Sub mylist_Click()
If Me.mylist.ListCount = 0 Then Exit Sub
nom = Me.mylist.List(Me.mylist.ListIndex)
On Error Resume Next
lig = Application.Match(nom, Feuil1.Range("B2:B65000"), 0) + 1
If Err <> 0 Then Err = 0: Me.mylist.Clear: Exit Sub
Me.mynom.Text = Feuil1.Cells(lig, 1) & " " & Feuil1.Cells(lig, 2)
End Sub

"Cyril DUPONT" message de news:
Merci Youki c'est exactement ce que je "cherchais" ^^

Par contre j'ai un autre souci du coup je n'arrive pas à adapter ce que
j'avais récupéré pour faire afficher les données correspondants au mot
recherché.
Je n'ai jamais utilisé une ListBox..
En fait j'aimerais que quand je sélectionne un mot dans la ListBox ça
m'affiche dans mes Textbox les infos (situées dans les colonnes
adjacentes)
de la même ligne.

J'ai du mal à m'exprimer ne connaissant pas les termes exact de ce que
je
cherche à faire mais j'espère que tu m'auras compris...

Merci d'avance pour ton aide.

--Cyril--



Bonjour,
voici un exemple:
le textbox nommé "cherche"
la liste nommée "myliste"
modifier With ......en conséquence(lieu de recherche)
Youky

Private Sub cherche_KeyDown(ByVal KeyCode As MSForms.ReturnInteger,
ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
If Me.cherche = "" Then Exit Sub
Me.mylist.Clear
With Feuil1.[B1:B5000]
Set c = .Find(cherche.Text, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.mylist.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
On Error Resume Next
Me.mylist.Selected(0) = True
Me.mylist.SetFocus
End Sub
"Cyril DUPONT" message de news:
Bonjour à tous et bon jour férié !

Voici mon soucis :
J'ai glané des infos sur une "recherche" à partir d'un UserForm dans
une
base de données.
En fait je souhaiterais, si c'est réalisable, pouvoir créer un champ
qui
se
comporterai comme une page de recherche internet à savoir :

s'il existe plusieurs données qui sont "proches" comme chien,
chienne,
chat
je voudrait qu'en tapant "ch" dans mon champ de recherche une liste
déroulante apparaisse avec toutes les données commençant par "ch" et
pouvoir
en choisir une afin d'afficher les autres données de ma base...

Voici ce que j'ai pour l'instant (ça fonctionne mais il faut taper
le
nom
exact recherché...) :

Private Sub CommandButton2_Click()
If UserForm1.TextBox13.Text = "" Then
GoTo Erreur
End If

' Recherche de la donnée puis selection de la ligne si donnée
trouvée

Dim x As Long

Sheets("Données").Select
' On recherche dans la Ligne 1 colonne A, si la case contient la
même
valeur
que notre champ de recherche
For x = 1 To Range("A65535").End(xlUp).Row
If UCase(Range("A" & x)) Like "*" & UCase(UserForm1.TextBox13.Value)
&
"*"
Then
' Si on a trouvé on va à "Trouve"
GoTo Trouve
Exit For
End If
' Sinon on passe à la ligne suivante
Next x
' Si on ne trouve rien, on va à "Erreur"
GoTo Erreur
Exit Sub

' Recherche trouvée, on retrouve notre programme pour charger le
formulaire

Trouve: LigneActive = x

UserForm1.TextBox8.Value = Sheets("Données").Cells(LigneActive,
"A").Value
UserForm1.ComboBox2.Value = Sheets("Données").Cells(LigneActive,
"B").Value
UserForm1.TextBox9.Value = Sheets("Données").Cells(LigneActive,
"C").Value
UserForm1.TextBox10.Value = Sheets("Données").Cells(LigneActive,
"D").Value
UserForm1.TextBox11.Value = Sheets("Données").Cells(LigneActive,
"E").Value
UserForm1.TextBox12.Value = Sheets("Données").Cells(LigneActive,
"F").Value
UserForm1.TextBox7.Value = Sheets("Données").Cells(LigneActive,
"G").Value

Exit Sub

' Message d'erreur

Erreur: MsgBox ("Requête non trouvée !")
Sheets("BackColor").Select
Exit Sub

End Sub


Est-ce réalisable ??
Merci à ceux qui vont se pencher sur mon soucis !

--Cyril--





















Publicité
Poster une réponse
Anonyme