IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Générer un Etat à partir du résultat d'une recherche (tuto Cafeine)


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Générer un Etat à partir du résultat d'une recherche (tuto Cafeine)
    Bonjour à tous,

    J'ai un formulaire de recherche basé sur le tuto de Cafeine.

    Je voudrais générer un Etat à partir des résutlats de ma recherche.

    Pour cela, j'ai créer un bouton "cmd_Report1" avec le code suivant :

    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
     
     
    Private Sub cmd_Report1_Click()
    DoCmd.OpenReport "ReportContacts1", acViewPreview, , lf_GetSqlWhere
    End Sub
     
     
    Function lf_GetSqlWhere()
    Dim strWhere As String
    Dim strSQL As String
     
        strSQL = Me.lstResults.RowSource
        ' récupère à partir des doubles paranthèses
        strWhere = Right(strSQL, Len(strSQL) - InStrRev(strSQL, "(("))
        ' supprime les caractères inutile de la fin
        strWhere = Left(strWhere, Len(strWhere) - 2)
     
        'on renvoi le résultat
        lf_GetSqlWhere = strWhere
    End Function
    Le problème est que lorsque je clic sur le bouton, un message d'erreur apparait :

    "Vous avez écrit une sous-requête pouvant renvoyer à plus d'un champ sans utiliser le mot réservé EXISTS dans la clause FROM de la requête principale. Révisez l'instruction SELECT de la sous-requête pour obtenir un seul champ".

    Au cas ou voici tout le code de mon formulaire :

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    Private Sub chkRA_Click()
     
    If Me.chkRA Then
        Me.txtRechRA.Visible = False
    Else
        Me.txtRechRA.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechRA_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
    Private Sub chkDoor_Click()
     
    If Me.chkDoor Then
        Me.txtRechDoor.Visible = False
    Else
        Me.txtRechDoor.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechDoor_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub chkPre2_Click()
     
    If Me.chkPre2 Then
        Me.txtRechPre2.Visible = False
    Else
        Me.txtRechPre2.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechPre2_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkNom2_Click()
     
    If Me.chkNom2 Then
        Me.txtRechNom2.Visible = False
    Else
        Me.txtRechNom2.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechNom2_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
     
     
    Private Sub chkPre1_Click()
     
    If Me.chkPre1 Then
        Me.txtRechPre1.Visible = False
    Else
        Me.txtRechPre1.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub txtRechPre1_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
    Private Sub chkNom1_Click()
     
    If Me.chkNom1 Then
        Me.txtRechNom1.Visible = False
    Else
        Me.txtRechNom1.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechNom1_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkLangue_Click()
     
    If Me.chkLangue Then
        Me.txtRechLangue.Visible = False
    Else
        Me.txtRechLangue.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechLangue_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkPays_Click()
     
    If Me.chkPays Then
        Me.txtRechPays.Visible = False
    Else
        Me.txtRechPays.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
     
     
    Private Sub txtRechPays_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkVille_Click()
     
    If Me.chkVille Then
        Me.txtRechVille.Visible = False
    Else
        Me.txtRechVille.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub txtRechVille_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
     
    Private Sub chkCP_Click()
     
    If Me.chkCP Then
        Me.txtRechCP.Visible = False
    Else
        Me.txtRechCP.Visible = True
    End If
     
    RefreshQuery
    End Sub
     
     
    Private Sub txtRechCP_BeforeUpdate(Cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkRS_Click()
     
    If Me.chkRS Then
        Me.txtRechRS.Visible = False
    Else
        Me.txtRechRS.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub txtRechRS_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
     
     
    Private Sub chkType_Click()
     
    If Me.chkType Then
        Me.cmbRechType.Visible = False
    Else
        Me.cmbRechType.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechType_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
     
     
     
     
     
     
     
     
     
     
     
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "- * - * -"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
            Case "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT Contacts.RéfContact, Contacts.Raisonsociale, Contacts.Client2, Contacts.Prospect, Contacts.Pays FROM Contacts;"
    Me.lstResults.Requery
     
    End Sub
     
     
     
     
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Contacts.RéfContact, Contacts.Raisonsociale, Contacts.Client2, Contacts.Prospect, Contacts.Pays FROM Contacts Where Contacts!RéfContact <> 0 "
     
    If Not Me.chkRS Then
        SQL = SQL & "And Contacts!Raisonsociale like '*" & Me.txtRechRS & "*' "
    End If
     
    If Not Me.chkCP Then
        SQL = SQL & "And Contacts!Codepostal like '*" & Me.txtRechCP & "*' "
    End If
     
    If Not Me.chkVille Then
        SQL = SQL & "And Contacts!Ville like '*" & Me.txtRechVille & "*' "
    End If
     
    If Not Me.chkPays Then
        SQL = SQL & "And Contacts!Pays like '*" & Me.txtRechPays & "*' "
    End If
     
    If Not Me.chkLangue Then
        SQL = SQL & "And Contacts!Langue like '*" & Me.txtRechLangue & "*' "
    End If
     
    If Not Me.chkNom1 Then
        SQL = SQL & "And Contacts!Nom like '*" & Me.txtRechNom1 & "*' "
    End If
     
    If Not Me.chkPre1 Then
        SQL = SQL & "And Contacts!Prénom like '*" & Me.txtRechPre1 & "*' "
    End If
     
    If Not Me.chkNom2 Then
        SQL = SQL & "And Contacts!Nom2 like '*" & Me.txtRechNom2 & "*' "
    End If
     
    If Not Me.chkPre2 Then
        SQL = SQL & "And Contacts!Prénom2 like '*" & Me.txtRechPre2 & "*' "
    End If
     
    If Not Me.chkDoor Then
        SQL = SQL & "And Contacts!Dooroppener like '*" & Me.txtRechDoor & "*' "
    End If
     
    If Not Me.chkRA Then
        SQL = SQL & "And Contacts!RéférenceA like '*" & Me.txtRechRA & "*' "
    End If
     
     
     
     
     
     
    If Not Me.chkType Then
        SQL = SQL & "And Contacts!Client2 = '" & Me.cmbRechType & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "Contacts", SQLWhere) & " / " & DCount("*", "Contacts")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
     
     
     
     
     
     
     
     
     
    Private Sub lstResults_DblClick(Cancel As Integer)
     
    DoCmd.OpenForm "Contacts", acNormal, , "[RéfContact] = " & Me.lstResults
     
     
    End Sub
     
     
     
     
     
    Private Sub cmd_Report1_Click()
    DoCmd.OpenReport "ReportContacts1", acViewPreview, , lf_GetSqlWhere
    End Sub
     
     
    Function lf_GetSqlWhere()
    Dim strWhere As String
    Dim strSQL As String
     
        strSQL = Me.lstResults.RowSource
        ' récupère à partir des doubles paranthèses
        strWhere = Right(strSQL, Len(strSQL) - InStrRev(strSQL, "(("))
        ' supprime les caractères inutile de la fin
        strWhere = Left(strWhere, Len(strWhere) - 2)
     
        'on renvoi le résultat
        lf_GetSqlWhere = strWhere
    End Function
    Merci d'avance pour votre aide!!

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    La première chose qui aurait du te frapper c'est que ta fonction ne te retourne absolument rien.

    Déclare là comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function lf_GetSqlWhere() As String

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Merci pour ta réponse.

    Effectivement, cela m'a echappé

    Par contre, j'ai toujours une erreur d'execution 3306 et le debug me renvoie à ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    Private Sub cmd_Report1_Click()
    DoCmd.OpenReport "ReportContacts1", acViewPreview, , lf_GetSqlWhere
    End Sub

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Il faut que ta fonction te renvoi quelque chose du genre :
    "[MonChamp] = mavaleur" ( mavaleur encadré par des " ou ' en fonction du type de donnée : texte ou numérique.)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Voici mon code modifié :

    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
     
    Private Sub cmd_Report1_Click()
     
    Dim rst As Recordset
        Dim strCriteria As String
     
        Set rst = CurrentDb.OpenRecordset("tbl_TempLstRpt", dbOpenSnapshot)
        ' recherche les informations de la table
        rst.FindFirst ("Table='" & Etat & "'")
     
        If rst.NoMatch Then     ' non trouvé
            MsgBox "Cette table ne possède pas d'état. " & _
                   "Veuillez renseigner la table des paramètres.", _
                   vbCritical + vbOKOnly, "formulaire de Recherche"
            Exit Sub
    Else
    DoCmd.OpenReport "Etat", acViewPreview, , lf_GetSqlWhere
    End If
    End Sub
    tbl_TempLstRpt est une table ou il y a deux champs : Table (avec comme entrée Contacts (la table qui renseigne la recherche) et Etat (ReportContacts1 qui renvoie à mon Etat).

    Or, cela ne marche toujours pas, il y a un message d'erreur :

    "Cette table ne possède pas d'Etat. Weuillez renseigner la table des paramètres".

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Quelqu'un aurait-il une piste à suivre??

    Merci d'avance

  7. #7
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Quelle est cette variable Etat ?
    Que vaut Etat au moment de l'exécution du code ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut Lou Pitchoun,

    Merci pour ton aide précieuse.

    Dans ma table tbl_TempLstRpt il y a 2 champs : Table et Etat. Le champ Table a comme entrée Contacts (la table principale) et le champ Etat a comme entrée ReportContacts1.

    L'Etat ReportContacts1 contient uniquement des valeurs présentes dans la table Contacts qui est la seule table dans laquelle le moteur de recherche exécute sa recherche.

  9. #9
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Le critère de ton findfirst n'a pas l'air correctement construit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rst.FindFirst ("Table='" & Etat & "'")
    Si Etat est le nom de ton champ : ça ne peut pas être le critère pour le champ table vu qu'il n'y aura jamais de résultat.

    Relis la partie sur FindFirst pour construire ton critère.

    Regarde également l'aide sur FindFirst ainsi que l'exemple.


  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    Merci pour tes réponses très intéressante et instructive

    Le problème est que je me suis basé sur le tuto de Fabrice qui met le code suivant :


    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
    Private Sub cmd_imprime_Click()
        Dim rst As Recordset
        Dim strCriteria As String
     
        Set rst = CurrentDb.OpenRecordset("tbl_TempLstRpt", dbOpenSnapshot)
        ' recherche les informations de la table
        rst.FindFirst ("Table='" & Me.cbo_table & "'")
     
        If rst.NoMatch Then     ' non trouvé
            MsgBox "Cette table ne possède pas d'état. " & _
                   "Veuillez renseigner la table des paramètres.", _
                   vbCritical + vbOKOnly, "formulaire de Recherche"
            Exit Sub
        Else    ' trouvé
           DoCmd.OpenReport rst.Fields("Etat"), acViewPreview, , lf_GetSqlWhere
        End If
     
        Set rst = Nothing
     
    End Sub
    Il met le critère Me.cbo_table qui est une boxliste qui permet de séléctionner la table où l'on fait la recherche.

    Or, je n'ai pas un tel boxliste car je me suis basé sur le tuto recherche multi-critère de cafine.

    Mon problème est que je n'arrive pas à comprendre quelle critère mettre à la place de ce Me.cbo_table.

    Je place en fichier joint mon fichier Access en zip si cela peut te guider un peu.

    Cela fait déjà quelques jours que j'essaye de comprendre cette partie en vain

    Merci d'avance!
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je travaille avec une antiquité d'Access.
    Je ne peux malheureusement ouvrir ta base.

    A la place de Me.cbo_table il faut que tu mettes le nom du champ qui va contenir la valeur cherchée.
    Cette valeur est présente à quel endroit de ton formulaire ?
    Quels sont les éléments qui composent ton formulaire ?

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    OKok je comprend.

    Résumons nous :

    Ma table principal s'appel : Contacts.

    J'ai ensuite un formulaire : Contacts qui contiens toutes les valeurs de la table Contacts.

    Puis, mon formulaire : frmRecherche qui est basé sur le tuto de cafeine et qui va faire une recherche dans la table Contacts. Mes critères de recherche sont presque tous les champs de ma table Contact. Dans la box lstresults va s'afficher uniquement quelques valeurs dont Raisonsociale qui est une valeur qui apparait à la fois dans ma table principale, mes deux formulaires et mon Etats.

    Enfin, mon Etat : ReportContact1 contiens uniquement quelques champs (en réalité c'est une lettre préformater pour envoyé à des clients).

    Je ne comprend pas trop ta phrase
    le nom du champ qui va contenir la valeur cherchée
    . De quelle valeur recherchée parles-tu?

    Merci

  13. #13
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    La valeur qui va faire que rst.FindFirst va retourner un enregistrement ce qui te permettra d'afficher ton état.

    Dans la box lstresults va s'afficher uniquement quelques valeurs dont Raisonsociale qui est une valeur qui apparait à la fois dans ma table principale, mes deux formulaires et mon Etats.
    Peut être cette valeur là ?

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Ok j'ai compris.

    En mettant la valeur Raisonsociale, cela me met toujours le message d'erreur.

    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
     
    Private Sub cmd_Report1_Click()
     
    Dim rst As Recordset
        Dim strCriteria As String
     
        Set rst = CurrentDb.OpenRecordset("tbl_TempLstRpt", dbOpenSnapshot)
        ' recherche les informations de la table
        rst.FindFirst ("Table='" & Raisonsociale & "'")
     
        If rst.NoMatch Then     ' non trouvé
            MsgBox "Cette table ne possède pas d'état. " & _
                   "Veuillez renseigner la table des paramètres.", _
                   vbCritical + vbOKOnly, "formulaire de Recherche"
            Exit Sub
    Else
    DoCmd.OpenReport "Etat", acViewPreview, , lf_GetSqlWhere
    End If
    End Sub
    Je pense que le problème viens du fait que le champ Raisonsociale n'apparait pas dans la table tbl_TempLstRpt.

    N'y aurait-il pas un moyen plus simple d'arriver à l'Etat sans passer par une table telle que tbl_TempLstRpt.

    J'ai l'impression que c'est cela qui pose soucis en l'espèce.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Le but en fin de compte est juste de savoir quel RéfContact (ID ou clef) se retrouve dans la lstResult (listeBox de résultat) afin de renvoyer à l'Etat pour qu'il imprime uniquement les données prédéfinis dans l'Etat en lien avec les différents RéfContact (ID ou clef).


    Quequ'un pourrait me donner une piste à suivre?

  16. #16
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    On va faire simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmd_Report1_Click()
        DoCmd.OpenReport "Etat", acViewPreview, ,"[xxxxx]='" & Me.lstResult & "'")
    End Sub
    Où xxxxx le nom du champ faisant référence au RéfContact.

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Salut,

    J'ai modifié le code comme tu l'as suggérer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Private Sub cmd_Report1_Click()
     
     
    DoCmd.OpenReport "Etat", acViewPreview, , "[Raisonsociale]='" & Me.lstResults & "'"
     
    End Sub
    L'Etat s'ouvre a présent mais par contre les différents champs qui se trouve sur l'Etat (ex. Adresse, pays, ville, code postale,...) ne s'affiche pas.

    Cela ne prend pas en compte les résultats de la recherche!

    Est-ce que cela est du au fait que l'on ait mis le champ [Raisonsociale] uniquement dans le code????

Discussions similaires

  1. Remplissage listbox à partir des résultats d'une recherche
    Par typhoon751 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/11/2010, 11h36
  2. Créer état à partir résultat d'une recherche
    Par Rcanada dans le forum IHM
    Réponses: 11
    Dernier message: 05/09/2006, 12h25
  3. Réponses: 8
    Dernier message: 11/08/2006, 10h30
  4. Réponses: 1
    Dernier message: 11/05/2006, 17h37
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo