cela marche, j'ai voulu am=E9liorer en placant trois boutons=20
pour ajouter des crit=E8res de recherche
cela marche mais c'est pas g=E9nial
quand j'ai fait un crit=E8re, pour faire une nouvelle=20
recherche sur un autre crit=E8re il faut effacer la saisie=20
du textbox et en faire une nouvelle
voici le code, on peut am=E9liorer ?
Private Sub OptClient_Click()
LeChoix =3D "client"
FrmRecherche.Caption =3D "Recherche sur " & LeChoix
End Sub
Private Sub OptEnseigne_Click()
LeChoix =3D "enseigne"
FrmRecherche.Caption =3D "Recherche sur " & LeChoix
End Sub
Private Sub OptVille_Click()
LeChoix =3D "affaire"
FrmRecherche.Caption =3D "Recherche sur ville"
End Sub
Private Sub TxtRecherche_Change()
If LeChoix =3D "" Then
MsgBox "Vous devez choisir un crit=E8re de recherche"
Else
'Affichage des enregistrements pour le client=20
s=E9lectionn=E9
Dim LgMot As Integer
LgMot =3D Len(Trim$(TxtRecherche.Text))
Set ADOaf =3D New ADODB.Recordset
With ADOaf
.ActiveConnection =3D ADOcn
.CursorType =3D adOpenDynamic
.Open "Select " & LeChoix & " from affaire where=20
left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim
(TxtRecherche.Text) & "'"
End With
'remplissage de MSRecherche
LaLigne% =3D 0
Do Until ADOaf.EOF
LaLigne% =3D LaLigne% + 1
MSRecherche.FixedAlignment(0) =3D 4
MSRecherche.Rows =3D LaLigne% + 1
MSRecherche.Row =3D LaLigne%
MSRecherche.Col =3D 0
MSRecherche.Text =3D ADOaf(LeChoix)
ADOaf.MoveNext
Loop
End If
End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
François Picalausa
Bonjour/soir,
On pourrait améliorer le code en créant des option buttons indexés. Si leur nom est OptSearchType on aurait le code suivant (je suppose que LeChoix est une variable privée du module). J'ai mis divers commentaires dans le code sur ce que je pensais utile d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer) Dim LabelCaption As String
'Définit le champ de recherche 'et le type de recherche affiché Select Case Index Case 0 LeChoix = "client" LabelCaption = "client" Case 1 LeChoix = "enseigne" LabelCaption = "enseigne" Case 2 LeChoix = "affaire" LabelCaption = "ville" End Select
'Affiche la sélection FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche TxtRecherche_Change End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then 'Rien de pire que d'afficher une message box pendant que l'utilisateur tape 'Je te conseille un ajout de cette vérification et déplacer la msgbox dans 'TxtRecherche_Validate 'MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0 pour tout faire foirer... 'Il faudrait faire des Replace$(Trim$(TxtRecherche.Text), "'", "''") 'Il faudrait terminer la requête par ; pour pouvoir le porter par après si nécessaire : 'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte mais je ne suis pas pro en SQL ;-) .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix & ", " & LgMot & _ ") LIKE '" & Replace$(Trim(TxtRecherche.Text)), "'", "''") & "' ORDER BY LeChoix ASC;" End With
'remplissage de MSRecherche 'Les %, &, $, ... sont obsolètes (mis à part $, dans les fonctions de VBA.Strings le permettant). 'Je te conseille de typer tes variables avec des As Integer, As Long et As String, respectivement LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
Private Sub TxtRecherche_Validate() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" End If End Sub
"JCM" a écrit dans le message de news:001401c3d530$9ba0f7b0$ Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons pour ajouter des critères de recherche cela marche mais c'est pas génial quand j'ai fait un critère, pour faire une nouvelle recherche sur un autre critère il faut effacer la saisie du textbox et en faire une nouvelle voici le code, on peut améliorer ?
Private Sub OptClient_Click() LeChoix = "client" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptEnseigne_Click() LeChoix = "enseigne" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptVille_Click() LeChoix = "affaire" FrmRecherche.Caption = "Recherche sur ville" End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic .Open "Select " & LeChoix & " from affaire where left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim (TxtRecherche.Text) & "'" End With 'remplissage de MSRecherche LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
merci de votre aide amicalement jean claude
Bonjour/soir,
On pourrait améliorer le code en créant des option buttons indexés. Si leur
nom est OptSearchType on aurait le code suivant (je suppose que LeChoix est
une variable privée du module).
J'ai mis divers commentaires dans le code sur ce que je pensais utile
d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer)
Dim LabelCaption As String
'Définit le champ de recherche
'et le type de recherche affiché
Select Case Index
Case 0
LeChoix = "client"
LabelCaption = "client"
Case 1
LeChoix = "enseigne"
LabelCaption = "enseigne"
Case 2
LeChoix = "affaire"
LabelCaption = "ville"
End Select
'Affiche la sélection
FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche
TxtRecherche_Change
End Sub
Private Sub TxtRecherche_Change()
If LeChoix = "" Then
'Rien de pire que d'afficher une message box pendant que
l'utilisateur tape
'Je te conseille un ajout de cette vérification et déplacer la
msgbox dans
'TxtRecherche_Validate
'MsgBox "Vous devez choisir un critère de recherche"
Else
'Affichage des enregistrements pour le client sélectionné
Dim LgMot As Integer
LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0 pour
tout faire foirer...
'Il faudrait faire des Replace$(Trim$(TxtRecherche.Text), "'",
"''")
'Il faudrait terminer la requête par ; pour pouvoir le porter
par après si nécessaire :
'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte mais je ne suis pas
pro en SQL ;-)
.Open "Select " & LeChoix & _
" from affaire where left(" & LeChoix & ", " & LgMot & _
") LIKE '" & Replace$(Trim(TxtRecherche.Text)), "'", "''") &
"' ORDER BY LeChoix ASC;"
End With
'remplissage de MSRecherche
'Les %, &, $, ... sont obsolètes (mis à part $, dans les fonctions
de VBA.Strings le permettant).
'Je te conseille de typer tes variables avec des As Integer, As Long
et As String, respectivement
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf(LeChoix)
ADOaf.MoveNext
Loop
End If
End Sub
Private Sub TxtRecherche_Validate()
If LeChoix = "" Then
MsgBox "Vous devez choisir un critère de recherche"
End If
End Sub
"JCM" <Jean-claude.mansion@wanadoo.fr> a écrit dans le message de
news:001401c3d530$9ba0f7b0$a101280a@phx.gbl...
Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons
pour ajouter des critères de recherche
cela marche mais c'est pas génial
quand j'ai fait un critère, pour faire une nouvelle
recherche sur un autre critère il faut effacer la saisie
du textbox et en faire une nouvelle
voici le code, on peut améliorer ?
Private Sub OptClient_Click()
LeChoix = "client"
FrmRecherche.Caption = "Recherche sur " & LeChoix
End Sub
Private Sub OptEnseigne_Click()
LeChoix = "enseigne"
FrmRecherche.Caption = "Recherche sur " & LeChoix
End Sub
Private Sub OptVille_Click()
LeChoix = "affaire"
FrmRecherche.Caption = "Recherche sur ville"
End Sub
Private Sub TxtRecherche_Change()
If LeChoix = "" Then
MsgBox "Vous devez choisir un critère de recherche"
Else
'Affichage des enregistrements pour le client
sélectionné
Dim LgMot As Integer
LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
.Open "Select " & LeChoix & " from affaire where
left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim
(TxtRecherche.Text) & "'"
End With
'remplissage de MSRecherche
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf(LeChoix)
ADOaf.MoveNext
Loop
End If
End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
On pourrait améliorer le code en créant des option buttons indexés. Si leur nom est OptSearchType on aurait le code suivant (je suppose que LeChoix est une variable privée du module). J'ai mis divers commentaires dans le code sur ce que je pensais utile d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer) Dim LabelCaption As String
'Définit le champ de recherche 'et le type de recherche affiché Select Case Index Case 0 LeChoix = "client" LabelCaption = "client" Case 1 LeChoix = "enseigne" LabelCaption = "enseigne" Case 2 LeChoix = "affaire" LabelCaption = "ville" End Select
'Affiche la sélection FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche TxtRecherche_Change End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then 'Rien de pire que d'afficher une message box pendant que l'utilisateur tape 'Je te conseille un ajout de cette vérification et déplacer la msgbox dans 'TxtRecherche_Validate 'MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0 pour tout faire foirer... 'Il faudrait faire des Replace$(Trim$(TxtRecherche.Text), "'", "''") 'Il faudrait terminer la requête par ; pour pouvoir le porter par après si nécessaire : 'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte mais je ne suis pas pro en SQL ;-) .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix & ", " & LgMot & _ ") LIKE '" & Replace$(Trim(TxtRecherche.Text)), "'", "''") & "' ORDER BY LeChoix ASC;" End With
'remplissage de MSRecherche 'Les %, &, $, ... sont obsolètes (mis à part $, dans les fonctions de VBA.Strings le permettant). 'Je te conseille de typer tes variables avec des As Integer, As Long et As String, respectivement LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
Private Sub TxtRecherche_Validate() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" End If End Sub
"JCM" a écrit dans le message de news:001401c3d530$9ba0f7b0$ Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons pour ajouter des critères de recherche cela marche mais c'est pas génial quand j'ai fait un critère, pour faire une nouvelle recherche sur un autre critère il faut effacer la saisie du textbox et en faire une nouvelle voici le code, on peut améliorer ?
Private Sub OptClient_Click() LeChoix = "client" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptEnseigne_Click() LeChoix = "enseigne" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptVille_Click() LeChoix = "affaire" FrmRecherche.Caption = "Recherche sur ville" End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic .Open "Select " & LeChoix & " from affaire where left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim (TxtRecherche.Text) & "'" End With 'remplissage de MSRecherche LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
merci de votre aide amicalement jean claude
JCM
Merci de ta réponse François
mais je ne comprends pas ces lignes:
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0 pour tout faire foirer... 'Il faudrait faire des Replace$(Trim$(TxtRecherche.Text), "'", "''") OU J'AJOUTE CECI
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et j'ai supprimé la condition IF ELSE ENDIF dans le Private Sub TxtRecherche_change()
et Cela BEUG
Merci de ton aide Jean Claude
-----Message d'origine----- Bonjour/soir,
On pourrait améliorer le code en créant des option
buttons indexés. Si leur
nom est OptSearchType on aurait le code suivant (je
suppose que LeChoix est
une variable privée du module). J'ai mis divers commentaires dans le code sur ce que je
pensais utile
d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer) Dim LabelCaption As String
'Définit le champ de recherche 'et le type de recherche affiché Select Case Index Case 0 LeChoix = "client" LabelCaption = "client" Case 1 LeChoix = "enseigne" LabelCaption = "enseigne" Case 2 LeChoix = "affaire" LabelCaption = "ville" End Select
'Affiche la sélection FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche TxtRecherche_Change End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then 'Rien de pire que d'afficher une message box
pendant que
l'utilisateur tape 'Je te conseille un ajout de cette vérification
et déplacer la
msgbox dans 'TxtRecherche_Validate 'MsgBox "Vous devez choisir un critère de
recherche"
Else 'Affichage des enregistrements pour le client
sélectionné
Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier
un ' AND '0'='0 pour
tout faire foirer... 'Il faudrait faire des
Replace$(Trim$(TxtRecherche.Text), "'",
"''") 'Il faudrait terminer la requête par ; pour
pouvoir le porter
par après si nécessaire : 'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte
mais je ne suis pas
pro en SQL ;-) .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix
& ", " & LgMot & _
") LIKE '" & Replace$(Trim
(TxtRecherche.Text)), "'", "''") &
"' ORDER BY LeChoix ASC;" End With
'remplissage de MSRecherche 'Les %, &, $, ... sont obsolètes (mis à part $,
dans les fonctions
de VBA.Strings le permettant). 'Je te conseille de typer tes variables avec des
As Integer, As Long
et As String, respectivement LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
Private Sub TxtRecherche_Validate() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de
news:001401c3d530$9ba0f7b0$ Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons pour ajouter des critères de recherche cela marche mais c'est pas génial quand j'ai fait un critère, pour faire une nouvelle recherche sur un autre critère il faut effacer la saisie du textbox et en faire une nouvelle voici le code, on peut améliorer ?
Private Sub OptClient_Click() LeChoix = "client" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptEnseigne_Click() LeChoix = "enseigne" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptVille_Click() LeChoix = "affaire" FrmRecherche.Caption = "Recherche sur ville" End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic .Open "Select " & LeChoix & " from affaire where left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim (TxtRecherche.Text) & "'" End With 'remplissage de MSRecherche LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
merci de votre aide amicalement jean claude
.
Merci de ta réponse François
mais je ne comprends pas ces lignes:
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0
pour
tout faire foirer...
'Il faudrait faire des
Replace$(Trim$(TxtRecherche.Text), "'",
"''")
OU J'AJOUTE CECI
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et
j'ai supprimé la condition IF ELSE ENDIF dans le Private
Sub TxtRecherche_change()
et Cela BEUG
Merci de ton aide
Jean Claude
-----Message d'origine-----
Bonjour/soir,
On pourrait améliorer le code en créant des option
buttons indexés. Si leur
nom est OptSearchType on aurait le code suivant (je
suppose que LeChoix est
une variable privée du module).
J'ai mis divers commentaires dans le code sur ce que je
pensais utile
d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer)
Dim LabelCaption As String
'Définit le champ de recherche
'et le type de recherche affiché
Select Case Index
Case 0
LeChoix = "client"
LabelCaption = "client"
Case 1
LeChoix = "enseigne"
LabelCaption = "enseigne"
Case 2
LeChoix = "affaire"
LabelCaption = "ville"
End Select
'Affiche la sélection
FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche
TxtRecherche_Change
End Sub
Private Sub TxtRecherche_Change()
If LeChoix = "" Then
'Rien de pire que d'afficher une message box
pendant que
l'utilisateur tape
'Je te conseille un ajout de cette vérification
et déplacer la
msgbox dans
'TxtRecherche_Validate
'MsgBox "Vous devez choisir un critère de
recherche"
Else
'Affichage des enregistrements pour le client
sélectionné
Dim LgMot As Integer
LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier
un ' AND '0'='0 pour
tout faire foirer...
'Il faudrait faire des
Replace$(Trim$(TxtRecherche.Text), "'",
"''")
'Il faudrait terminer la requête par ; pour
pouvoir le porter
par après si nécessaire :
'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte
mais je ne suis pas
pro en SQL ;-)
.Open "Select " & LeChoix & _
" from affaire where left(" & LeChoix
& ", " & LgMot & _
") LIKE '" & Replace$(Trim
(TxtRecherche.Text)), "'", "''") &
"' ORDER BY LeChoix ASC;"
End With
'remplissage de MSRecherche
'Les %, &, $, ... sont obsolètes (mis à part $,
dans les fonctions
de VBA.Strings le permettant).
'Je te conseille de typer tes variables avec des
As Integer, As Long
et As String, respectivement
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf(LeChoix)
ADOaf.MoveNext
Loop
End If
End Sub
Private Sub TxtRecherche_Validate()
If LeChoix = "" Then
MsgBox "Vous devez choisir un critère de
"JCM" <Jean-claude.mansion@wanadoo.fr> a écrit dans le
message de
news:001401c3d530$9ba0f7b0$a101280a@phx.gbl...
Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons
pour ajouter des critères de recherche
cela marche mais c'est pas génial
quand j'ai fait un critère, pour faire une nouvelle
recherche sur un autre critère il faut effacer la saisie
du textbox et en faire une nouvelle
voici le code, on peut améliorer ?
Private Sub OptClient_Click()
LeChoix = "client"
FrmRecherche.Caption = "Recherche sur " & LeChoix
End Sub
Private Sub OptEnseigne_Click()
LeChoix = "enseigne"
FrmRecherche.Caption = "Recherche sur " & LeChoix
End Sub
Private Sub OptVille_Click()
LeChoix = "affaire"
FrmRecherche.Caption = "Recherche sur ville"
End Sub
Private Sub TxtRecherche_Change()
If LeChoix = "" Then
MsgBox "Vous devez choisir un critère de recherche"
Else
'Affichage des enregistrements pour le client
sélectionné
Dim LgMot As Integer
LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset
With ADOaf
.ActiveConnection = ADOcn
.CursorType = adOpenDynamic
.Open "Select " & LeChoix & " from affaire where
left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim
(TxtRecherche.Text) & "'"
End With
'remplissage de MSRecherche
LaLigne% = 0
Do Until ADOaf.EOF
LaLigne% = LaLigne% + 1
MSRecherche.FixedAlignment(0) = 4
MSRecherche.Rows = LaLigne% + 1
MSRecherche.Row = LaLigne%
MSRecherche.Col = 0
MSRecherche.Text = ADOaf(LeChoix)
ADOaf.MoveNext
Loop
End If
End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
'Dans ton textbox, j'ajouterais volontier un ' AND '0'='0 pour tout faire foirer... 'Il faudrait faire des Replace$(Trim$(TxtRecherche.Text), "'", "''") OU J'AJOUTE CECI
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et j'ai supprimé la condition IF ELSE ENDIF dans le Private Sub TxtRecherche_change()
et Cela BEUG
Merci de ton aide Jean Claude
-----Message d'origine----- Bonjour/soir,
On pourrait améliorer le code en créant des option
buttons indexés. Si leur
nom est OptSearchType on aurait le code suivant (je
suppose que LeChoix est
une variable privée du module). J'ai mis divers commentaires dans le code sur ce que je
pensais utile
d'ajouter/de modifier:
Private LeChoix As String
Private Sub OptSearchType_Click (Index As Integer) Dim LabelCaption As String
'Définit le champ de recherche 'et le type de recherche affiché Select Case Index Case 0 LeChoix = "client" LabelCaption = "client" Case 1 LeChoix = "enseigne" LabelCaption = "enseigne" Case 2 LeChoix = "affaire" LabelCaption = "ville" End Select
'Affiche la sélection FrmRecherche.Caption = "Recherche sur " & LabelCaption
'Permet le rafraichissement de la recherche TxtRecherche_Change End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then 'Rien de pire que d'afficher une message box
pendant que
l'utilisateur tape 'Je te conseille un ajout de cette vérification
et déplacer la
msgbox dans 'TxtRecherche_Validate 'MsgBox "Vous devez choisir un critère de
recherche"
Else 'Affichage des enregistrements pour le client
sélectionné
Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic
'Dans ton textbox, j'ajouterais volontier
un ' AND '0'='0 pour
tout faire foirer... 'Il faudrait faire des
Replace$(Trim$(TxtRecherche.Text), "'",
"''") 'Il faudrait terminer la requête par ; pour
pouvoir le porter
par après si nécessaire : 'certains moteurs de bdd l'exigent.
'La ligne suivante me semble plus correcte
mais je ne suis pas
pro en SQL ;-) .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix
& ", " & LgMot & _
") LIKE '" & Replace$(Trim
(TxtRecherche.Text)), "'", "''") &
"' ORDER BY LeChoix ASC;" End With
'remplissage de MSRecherche 'Les %, &, $, ... sont obsolètes (mis à part $,
dans les fonctions
de VBA.Strings le permettant). 'Je te conseille de typer tes variables avec des
As Integer, As Long
et As String, respectivement LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
Private Sub TxtRecherche_Validate() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de
news:001401c3d530$9ba0f7b0$ Merci pour toutes vos réponses
cela marche, j'ai voulu améliorer en placant trois boutons pour ajouter des critères de recherche cela marche mais c'est pas génial quand j'ai fait un critère, pour faire une nouvelle recherche sur un autre critère il faut effacer la saisie du textbox et en faire une nouvelle voici le code, on peut améliorer ?
Private Sub OptClient_Click() LeChoix = "client" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptEnseigne_Click() LeChoix = "enseigne" FrmRecherche.Caption = "Recherche sur " & LeChoix End Sub
Private Sub OptVille_Click() LeChoix = "affaire" FrmRecherche.Caption = "Recherche sur ville" End Sub
Private Sub TxtRecherche_Change() If LeChoix = "" Then MsgBox "Vous devez choisir un critère de recherche" Else 'Affichage des enregistrements pour le client sélectionné Dim LgMot As Integer LgMot = Len(Trim$(TxtRecherche.Text))
Set ADOaf = New ADODB.Recordset With ADOaf .ActiveConnection = ADOcn .CursorType = adOpenDynamic .Open "Select " & LeChoix & " from affaire where left(" & LeChoix & ", " & LgMot & ")LIKE'" & Trim (TxtRecherche.Text) & "'" End With 'remplissage de MSRecherche LaLigne% = 0 Do Until ADOaf.EOF LaLigne% = LaLigne% + 1 MSRecherche.FixedAlignment(0) = 4 MSRecherche.Rows = LaLigne% + 1 MSRecherche.Row = LaLigne% MSRecherche.Col = 0 MSRecherche.Text = ADOaf(LeChoix) ADOaf.MoveNext Loop End If End Sub
j'aurais aimer ajouter un order by LeChoix ASC, et ca BEUG
merci de votre aide amicalement jean claude
.
François Picalausa
Bonjour/soir, "JCM" a écrit dans le message de news:098d01c3d5cf$77035700$
mais je ne comprends pas ces lignes:
Replace$(Trim$(TxtRecherche.Text), "'", "''") OU J'AJOUTE CECI
Je l'avais ajouté dans le code: .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix & ", " & LgMot & ") LIKE '" & _ *Replace$(Trim (TxtRecherche.Text)), "'", "''")* & "' ORDER BY LeChoix ASC;"
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et j'ai supprimé la condition IF ELSE ENDIF dans le Private Sub TxtRecherche_change()
Pas supprimer la condition... tu dois toujours tester ta condition pour ne pas exécuter le code! Mais il faut la recopier. La MsgBox par contre n'est à garder que dans la procédure Validate.
Bonjour/soir,
"JCM" <jean-claude.mansion@wanadoo.fr> a écrit dans le message de
news:098d01c3d5cf$77035700$a401280a@phx.gbl
mais je ne comprends pas ces lignes:
Replace$(Trim$(TxtRecherche.Text), "'",
"''")
OU J'AJOUTE CECI
Je l'avais ajouté dans le code:
.Open "Select " & LeChoix & _
" from affaire where left(" & LeChoix
& ", " & LgMot & ") LIKE '" & _
*Replace$(Trim (TxtRecherche.Text)), "'", "''")*
& "' ORDER BY LeChoix ASC;"
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et
j'ai supprimé la condition IF ELSE ENDIF dans le Private
Sub TxtRecherche_change()
Pas supprimer la condition... tu dois toujours tester ta condition pour ne
pas exécuter le code!
Mais il faut la recopier.
La MsgBox par contre n'est à garder que dans la procédure Validate.
Bonjour/soir, "JCM" a écrit dans le message de news:098d01c3d5cf$77035700$
mais je ne comprends pas ces lignes:
Replace$(Trim$(TxtRecherche.Text), "'", "''") OU J'AJOUTE CECI
Je l'avais ajouté dans le code: .Open "Select " & LeChoix & _ " from affaire where left(" & LeChoix & ", " & LgMot & ") LIKE '" & _ *Replace$(Trim (TxtRecherche.Text)), "'", "''")* & "' ORDER BY LeChoix ASC;"
Ensuite j'ai déplacer la MsgBox comme tu me l'a indiqué et j'ai supprimé la condition IF ELSE ENDIF dans le Private Sub TxtRecherche_change()
Pas supprimer la condition... tu dois toujours tester ta condition pour ne pas exécuter le code! Mais il faut la recopier. La MsgBox par contre n'est à garder que dans la procédure Validate.