Bonjour,
Comment modifier le module de recherche de Fabrice CONSTANS 1ère partie pour
1 - la table est définie (tbl_xxx) à la place de la liste déroulante cbo_table .
2 - faire plusieurs choix dans la liste des champs.
Merci
Bonjour,
Comment modifier le module de recherche de Fabrice CONSTANS 1ère partie pour
1 - la table est définie (tbl_xxx) à la place de la liste déroulante cbo_table .
2 - faire plusieurs choix dans la liste des champs.
Merci
Salut
Peut-être en utilisant la méthode de recherche de Jeannot45
Voici le code utilise:
********************************************
********************************************************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 !Private Sub cmd_Rechercher_Click() ! ! Dim strTable As String, strField As String, strCriteria As String, strSql As String ! Dim Criter As Variant ! ! strTable = "[" & Me.cbo_table & "]" ' récupère le nom de la table ! strField = "[" & Me.cbo_champ & "]" ' récupère le nom du champ ! ! 'Gestion des nulls ! If IsNull(Me.cbo_table) Or IsNull(Me.cbo_champ) Then ! MsgBox "Vous devez renseigner la table et le champ pour effectuer une recherche !", vbExclamation + vbOKOnly, "Recherche" ! Exit Sub ! End If ! ! ' force les majuscules l'un ou l'autre ! Me.txt_critere = UCase$(Nz(Me.txt_critere)) ! 'Me.txt_critere = StrConv(Me.txt_critere, vbUpperCase) ! ! ' compose le critere de recherche ! strCriteria = strTable & "." & strField & " Like """ & Me.txt_critere & """" ! ! Select Case Me.opt_Recherche ! Case 1 ' strictement égal ! strCriteria = strTable & "." & strField & " Like """ & Me.txt_critere & """" ! Case 2 ' commence par ! strCriteria = strTable & "." & strField & " Like """ & Me.txt_critere & "*""" ! Case 3 ' contient ! strCriteria = strTable & "." & strField & " Like ""*" & Me.txt_critere & "*""" ! Case 4 ' finit par ! strCriteria = strTable & "." & strField & " Like ""*" & Me.txt_critere & """" ! Case 5 ' ne contient pas ! strCriteria = "NOT (" & strTable & "." & strField & " Like ""*" & Me.txt_critere & "*"")" ! End Select ! ' construit la requête sql ! strSql = "SELECT DISTINCTROW " & strTable & ".*" ! strSql = strSql & " FROM " & strTable ! strSql = strSql & " WHERE ((" & strCriteria & "));" ! !Me.lst_resultat.ColumnWidths = !"0,817cm;0,817cm;1,561cm;2,561cm;2cm;0,803cm;2,561cm;2,561cm;0,806cm;2,561cm;2,561cm;0.8cm;2,561cm;2,561cm;2,561cm;2,561cm;1cm;;2cm;0.8cm;2cm;2cm;0.8cm;2cm;!2cm;1cm;1cm;1cm;1cm;1cm;2cm;1cm" ! ! ! Me.lst_resultat.RowSource = strSql ' affecte sql a lst_Resultat ! Me.lst_resultat.Requery ' recalcule la liste ! ! ! Me.lbl_nbRecord.Caption = IIf(Me.lst_resultat.ListCount _ ! <= 1, 0, Me.lst_resultat.ListCount - 1) & "/" & _ ! DCount(Me.cbo_champ, Me.cbo_table) ! !End Sub
Comme intitulé dans le premier message, il s'agit celui de Loufab.
Comment remplacer
strTable = "[" & Me.cbo_table & "]" ' récupère le nom de la table:
remplacé par le nom de la table qui est la seule utilisée dans le formulaire
strField = "[" & Me.cbo_champ & "]" ' récupère le nom du champ:
Comment choisir les champs que l'on désire dans la liste déroulante Me.cbo_champ.
Comment faire une recherche sur 2 champs de cette table (champs texte , champs numerique.
Merci
Bonjour,
ça me semble évident à première vue, je ferais :strTable = "[" & Me.cbo_table & "]" ' récupère le nom de la table:.
remplacé par le nom de la table qui est la seule utilisée dans le formulaire
Où le terme NomTable est à remplacer par le nom de ta table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part strTable = "[NomTable]"
Cdlt,
Bonjour,
Merci pour la réponse, mais je me suis mal exprimé.
Le formulaire s'ouvre sur une liste déroulante "Me.cbo_Table" ou on choisit la table désirée.
Or je n'utilise qu'une seule table intitulée "tbl_Naissances".
----------------------------------------
-------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 !Private Sub cbo_table_AfterUpdate() ! !Dim strTable As String ! ! 'Mise à jour des liste déroulantes ! Me.cbo_champ.RowSource = Me.cbo_table.Value ! Me.cbo_champ.Requery ! ! 'Récupère le nom de la table ! strTable = Me.cbo_table ! ! 'Rend visible ! Me.lblNaissances.Visible = True ! Me.ImgNaissances.Visible = True ! !End Sub
Je souhaite supprimer la liste déroulante "cbo_Table" pour la remplacer par "tbl_Naissances" et pouvoir récupérer les champs de la tbl_Naissances dans cbo_Champ
Merci
Bonjour,
Concernant le nom de la table, je ne vois pas où est le problème, vous pouvez faire simplement :
Cdlt
Code : Sélectionner tout - Visualiser dans une fenêtre à part strTable = "[tbl_Naissances]"
OK
Autre problème sur le code suivant
strVille = Me.lst_resultat.Column(13)
'strResul = DLookup("[tbl_communes.Nom]", "tbl_communes", "[tbl_communes.Ville] = '279'")
strResul = DLookup("[tbl_communes.Nom]", "tbl_communes", "[tbl_communes.Ville] = 'strVille'")
La 1ère ligne me renvoie bien le nom de la ville dont le code est 279
la 2ème ne fonctionne pas. il ne reconnait pas la variable strVille
J'ai essayé plusieurs formules pour srtVille , "" ,() , [], rien , retourne erreur null
Merci
Bonjour
Code : Sélectionner tout - Visualiser dans une fenêtre à part strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = " & Me.lst_resultat.Column(13))
Bonjour,
Cela fonctionne en me retournant le code numérique ex "151".
Je voudrais que le résultat corresponde au nom de la ville associé au code "151" ex "Paris" qui est dans la table "Communes"
Le 1er champ de la table est "Ville" qui est le code "151" le second "Nom" qui correspond à "Paris".
Merci
Bonjour,
Peux-tu nous faire parvenir une copie d'écran du début de ta table et une copie d'écran de la structure. ?
On pourrait y voir les noms de colonnes et les premières valeurs. ça nous permettra de savoir pourquoi [Nom] renvoie '151' et non pas le nom de la ville.
Si Nom contient le Paris et que Ville contient 151 il n'y a pas de raison que :
Ne renvoi pas "Paris" pour un tuple 151, "Paris". Si Ville est Numérique uniquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = " & Me.lst_resultat.Column(13) )
Si Ville est de type Texte la syntaxe doit plutôt être :
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = """ & Me.lst_resultat.Column(13) & """")
Copie du contenu : tbl_communes
Ville Nom
001 Achères
002 Ainay-le-Vieil
003 Aix-d'Angillon
038 Allichamps
004 Allogny
Copie de la structure
Ville Texte Court
Nom Texte Court
Déclaration
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim strResul As Variant
renvoie toujours un nombre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim strResul As String
Les deux formules :
Renvoie systématiquement toujours un nombre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = " & Me.lst_resultat.Column(13) ) strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = """ & Me.lst_resultat.Column(13) & """")
Merci.
C'est cette syntaxe que tu dois utiliser
Peux-tu poster le code complet de la procédure où tu utilises ce code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 dim strResul as Variant strResul = DLookup("[Nom]", "tbl_communes", "[Ville] = """ & Me.lst_resultat.Column(13) & """")
Que renvoi Me.lst_resultat.Column(13) au moment de l'exécution ?
Cordialement,
Bonjour,
J'ai résolu mon problème avec ce code
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Dim strResul As String strResul = Me.lst_resultat.Column(15) Me.LstCodeInsee.Value = strResul strResul = Me.LstCodeInsee.Column(1)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager