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

VB 6 et antérieur Discussion :

Ordre alphabétique Listbox


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut Ordre alphabétique Listbox
    Bonjour, voilà je suis débutante et j'essaye de réaliser une vidéothèque avec feuille mdi et une base de donnée access. J'ai d'ailleurs presque fini. Le problème est que je n'arrive pas à faire un tri par ordre alphabétique sur une de mes tables. J'ai créé une feuille Réalisateurs. Je souhaiterais pouvoir mettre dans l'ordre alphabétique ma liste mais en me permettant de choisir la première lettre du nom.
    Pour cela, j'ai fais un morceau de code me permettant de mettre les 26 lettres de l'alphabet dans une listbox mais lorsque je clique sur l'une d'elles, j'ai toujours ma liste entière des noms de réalisateurs.
    Voici le code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Liste_DebutLettre()
    Dim i As Integer
    ' début
        ' remplir la liste des fonctions
         Lst_DebutLettre.Clear
         For i = 65 To 90
            Lst_DebutLettre.AddItem Chr$(i)
        sql = "select REALISATEURS_NOM from REALISATEURS where REALISATEURS_NOM LIKE 'i' "
         Next i
    End Sub
    En gros pour être clair, je voudrais lorsque je sélectionne une lettre par exemple B, je voudrais que tous les noms des réalisateurs commençant uniquement par B s'affiche.
    Quelqu'un aurait-il une idée ? Merci beaucoup.











    Voici l'intégralité de mon code pour cette feuille :
    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
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    Option Explicit
    Dim DebutLettre As String
    Dim ref As Integer
     
     
    Private Sub init_boutons()
    ' debut
       ' Cmd_Ajouter.Enabled = False
        Cmd_Modifier.Enabled = False
        Cmd_valider.Enabled = False
        Cmd_Supprimer.Enabled = False
        Cmd_imprimer.Enabled = False
        Cmd_annuler.Enabled = False
    End Sub
     
    Private Sub init_zones()
    ' debut
        Lbl_Numero.Caption = ""
        Opt_Sexe(1).Value = False
        Opt_Sexe(2).Value = False
        Txt_Nom.Text = ""
        Txt_Prenom.Text = ""
        Txt_Ddn.Text = ""
        Txt_Mort.Text = ""
        Txt_LieuDdn.Text = ""
        Txt_LieuMort.Text = ""
        Txt_Nationalite.Text = ""
        Lbl_affichage.Caption = ""
    End Sub
     
    Private Sub Cmd_annuler_click()
    ' debut
        init_zones
        Lst_DebutLettre.Text = DebutLettre
        desactiver
        Lbl_affichage.Caption = ""
    End Sub
     
    Private Sub Cmd_Fermer_Click()
       Unload Me
    End Sub
     
    Public Sub Liste_DebutLettre()
    Dim i As Integer
    ' début
        ' remplir la liste des fonctions
         Lst_DebutLettre.Clear
         For i = 65 To 90
            Lst_DebutLettre.AddItem Chr$(i)
        sql = "select REALISATEURS_NOM from REALISATEURS where REALISATEURS_NOM LIKE 'i'"
         Next i
    End Sub
     
     
    Private Sub Lst_DebutLettre_click()
    'debut
        init_zones
        MSF_REALISATEUR.Enabled = True
        DebutLettre = Lst_DebutLettre
     
        'alimentation de la grille films
        sql = "SELECT REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_SEXE, REALISATEURS_DDN, REALISATEURS_MORT, REALISATEURS_LIEUDDN, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS"
        sql = sql + "WHERE REALISATEURS_NOM LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%';"
        grille
    End Sub
     
     
    Private Sub desactiver() 'permet de desactiver les champs textes
    ' debut
        Txt_Nom.Enabled = False
        Txt_Prenom.Enabled = False
        Txt_Ddn.Enabled = False
        Txt_Mort.Enabled = False
        Txt_LieuDdn.Enabled = False
        Txt_LieuMort.Enabled = False
        Txt_Nationalite.Enabled = False
    End Sub
     
    Private Sub activer() 'permet d'activer les champs textes
    ' debut
        Frame_Realisateurs.Enabled = True
        Txt_Nom.Enabled = True
        Txt_Prenom.Enabled = True
        Txt_Ddn.Enabled = True
        Txt_LieuDdn.Enabled = True
        Txt_LieuMort.Enabled = True
        Txt_Mort.Enabled = True
        Txt_Nationalite.Enabled = True
    End Sub
     
    Private Sub Cmd_effacer_Click()
    ' debut
        Call Liste_DebutLettre
        'fonction
        grille
     
        Lbl_affichage = ""
        init_boutons
        init_zones
        MSF_REALISATEUR.Enabled = True
        entete_grille
    End Sub
     
    Private Sub Cmd_Imprimer_Click()
        Frm_Réalisateurs.PrintForm
    End Sub
     
    Private Sub cmd_modifier_click()
    ' debut
        modif = 1
        activer
     
        Cmd_Modifier.Enabled = False
        Cmd_valider.Enabled = True
     
        Lbl_affichage.Caption = "Modifier puis valider"
    End Sub
     
     
    Private Sub Cmd_Supprimer_Click()
    ' debut
       MSF_REALISATEUR.Col = 0
       ' il faudrait vérifier la présence du personnel
         confirmer
         If supp Then
            sql = "DELETE * FROM REALISATEURS where REALISATEURS_NUM = " & MSF_REALISATEUR.Text & " "
            cnx.Execute sql
            Lbl_affichage = "Suppression réussie"
             ' maj de la grille personnel
            grille
     
         End If
        ' modifications des contrôles
        init_zones
        init_boutons
        Cmd_ajouter.Enabled = True
    End Sub
     
    Private Sub confirmer()
    Dim var
    ' DEBUT
        'demander confirmation de la suppression
        var = MsgBox("Etes-vous sûr de vouloir supprimer ?" & Txt_Nom & Txt_Prenom, vbYesNo + vbExclamation, "Supprimer")
        If var = 6 Then
             supp = True
        Else
            supp = False
        End If
     
    End Sub
     
     
    Private Sub entete_grille()
    ' debut
            'entête de la grille personnel
            MSF_REALISATEUR.Clear
            MSF_REALISATEUR.Rows = 2 'nb de lignes
            MSF_REALISATEUR.Cols = 9 'nb de colonnes
            MSF_REALISATEUR.Row = 0
            MSF_REALISATEUR.Col = 0
            MSF_REALISATEUR.Text = "Numéro"
            MSF_REALISATEUR.Col = 1
            MSF_REALISATEUR.Text = "Nom"
            MSF_REALISATEUR.Col = 2
            MSF_REALISATEUR.Text = "Prénom"
            MSF_REALISATEUR.Col = 3
            MSF_REALISATEUR.Text = "Sexe"
            MSF_REALISATEUR.Col = 4
            MSF_REALISATEUR.Text = "Date de naissance"
            MSF_REALISATEUR.Col = 5
            MSF_REALISATEUR.Text = "Lieu de naissance"
            MSF_REALISATEUR.Col = 6
            MSF_REALISATEUR.Text = "Mort"
            MSF_REALISATEUR.Col = 7
            MSF_REALISATEUR.Text = "Lieu du décès"
            MSF_REALISATEUR.Col = 8
            MSF_REALISATEUR.Text = "Nationalité"
            MSF_REALISATEUR.ColWidth(0) = 650
            'colwidth définit la largeur de la colonne spécifiée
            MSF_REALISATEUR.ColWidth(1) = 1000
            MSF_REALISATEUR.ColWidth(2) = 1000
            MSF_REALISATEUR.ColWidth(3) = 500
            MSF_REALISATEUR.ColWidth(4) = 1500
            MSF_REALISATEUR.ColWidth(5) = 1300
            MSF_REALISATEUR.ColWidth(6) = 900
            MSF_REALISATEUR.ColWidth(7) = 1300
            MSF_REALISATEUR.ColWidth(8) = 1300
    End Sub
     
     
    Private Sub Cmd_ajouter_click()
    Dim modif As Integer
    ' DEBUT
        modif = 0 'initialisation
        init_zones
        init_boutons
        activer
     
        ' rechercher le numéro du personnel
        sql = "select max(REALISATEURS_NUM) as Nb From REALISATEURS"
        rst_realisateurs.Open sql, cnx
        If rst_realisateurs.EOF Then
            Lbl_Numero.Caption = 1
        Else
            Lbl_Numero.Caption = (Val(rst_realisateurs.Fields("nb")) + 1)
        End If
        rst_realisateurs.Close
     
        Frame_Realisateurs.Enabled = True
     
        Cmd_valider.Enabled = True
        Cmd_annuler.Enabled = True
     
        Lbl_affichage.Caption = "Saisir toutes les informations puis valider"
     
    End Sub
     
     
     
    Private Sub Cmd_Valider_Click()
    Dim sexe As String
    'début
         ' il faut vérifier les différentes informations saisies
         msg = " voulez vous vérifier : "
         verifier
         If verifok Then
                If modif = 0 Then
                    ' il s'agit d'une saisie
     
                        If Opt_Sexe(1).Value = True Then
                            sexe = "F"
                         Else
                            sexe = "M"
                         End If
     
                         sql = "insert into EMPRUNTEUR  "
                         sql = sql + " values (" & Val(Lbl_Numero.Caption) & ", '" & Txt_Nom.Text & "', '" & Txt_Prenom.Text & "', '" & Txt_Ddn.Text & "', '" & Txt_Mort.Text & "', '" & Txt_LieuDdn.Text & "', '" & Txt_LieuMort.Text & "', '" & Txt_Nationalite.Text & "','" & sexe & " ')"
     
                        ' execution de la requête d'insertion
                         cnx.Execute sql
                         msg = " Enregistrement effectué "
                         init_zones
                         grille
                Else
                     ' il s'agit d'une modification
                    'mise à jour des coordonnées du membre de l'emprunteur
                     sql = "update REALISATEURS  set "
                     sql = sql + " REALISATEURS_NOM = '" & Txt_Nom.Text & "',"
                     sql = sql + " REALISATEURS_PRENOM = '" & Txt_Prenom.Text & "',"
                     sql = sql + " REALISATEURS_DDN='" & Txt_Ddn.Text & "', "
                     sql = sql + " REALISATEURS_LIEUDDN='" & Txt_LieuDdn.Text & "',"
                     sql = sql + " REALISATEURS_MORT='" & Txt_Mort.Text & "',"
                     sql = sql + " REALISATEURS_LIEUMORT='" & Txt_LieuMort.Text & "',"
                     sql = sql + " REALISATEURS_NATIONALITE='" & Txt_Nationalite.Text & "'"
                     sql = sql + " where REALISATEURS_NUM = " & Val(Lbl_Numero.Caption)
                     cnx.Execute sql
     
                     msg = " Modification effectuée"
     
                      init_zones
                      init_boutons
     
                      grille
                End If
          End If
          Lbl_affichage = msg
    End Sub
     
     
     
    Private Sub verifier()
    'début
     
            verifok = True
            ' vérifier le type et la saisie des différentes informations
            If Txt_Nom.Text = "" Or IsNumeric(Txt_Nom) Then
                    msg = msg + " le nom ,"
                    verifok = False
            End If
            If Txt_Prenom.Text = "" Or IsNumeric(Txt_Nom) Then
                    msg = msg + "le prénom,"
                    verifok = False
            End If
            If Opt_Sexe(1).Value = False And Opt_Sexe(2).Value = False Then
                    msg = msg + "le sexe,"
                    verifok = False
            End If
            If Txt_Ddn = "" Then
                    msg = msg + " la date de naissance,"
                    verifok = False
            End If
            If Txt_LieuDdn = "" Then
                    msg = msg + " le lieu de naissance,"
                    verifok = False
           End If
           If Txt_Mort = "" Then
                    msg = msg + " la date de décès,"
                    verifok = False
           End If
     
           If verifok Then
                ' verifier si il y a un doublon dans le cas ou la saisie des données est complète
                 If modif = 0 Then
                        sql = " select COUNT(REALISATEURS_NUM) AS NB FROM REALISATEURS where REALISATEURS_NOM = '" & Txt_Nom.Text & "' AND REALISATEURS_PRENOM = '" & Txt_Prenom & "'"
                 Else
                       sql = " select COUNT(REALISATEURS_NUM) AS NB FROM REALISATEURS where REALISATEURS_NOM = '" & Txt_Nom.Text & "' AND REALSIATEURS_PRENOM = '" & Txt_Prenom & "'"
                     sql = sql + " and REALISATEURS_NUM <>  " & Lbl_Numero.Caption
     
                 End If
                 ' exécuter la requête qui vérifie le doublon
                    rst_realisateurs.Open sql, cnx
                    If rst_realisateurs.Fields("nb") > 0 Then
                           msg = Txt_Nom.Text & " " & Txt_Prenom & "  existe déjà !"
                           verifok = False
                    End If
                    rst_realisateurs.Close
            End If
     
    End Sub
     
     
     
     
    Private Sub recupdetail()
    ' debut
            MSF_REALISATEUR.Col = 0
            sql = "select  * FROM REALISATEURS "
            sql = sql + " where REALISATEURS_NUM = " & Val(MSF_REALISATEUR.Text)
            rst_realisateurs.Open sql, cnx
            If Not rst_realisateurs.EOF Then
                 Lbl_Numero.Caption = rst_realisateurs.Fields("REALISATEURS_NUM")
                 Txt_Nom.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
                 Txt_Prenom.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
     
                 If rst_realisateurs.Fields("REALISATEURS_SEXE") = "F" Then
                    Opt_Sexe(1).Value = True
                 Else
                    Opt_Sexe(2).Value = True
                 End If
     
                 If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                    Txt_Ddn.Text = ""
                 Else
                    Txt_Ddn.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
                 End If
     
                 If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                    Txt_LieuDdn.Text = ""
                 Else
                    Txt_LieuDdn.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
                 End If
     
                 If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                    Txt_Mort.Text = ""
                 Else
                    Txt_Mort.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
                 End If
     
                 If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                    Txt_LieuMort.Text = ""
                 Else
                    Txt_LieuMort.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
                 End If
     
                 If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                    Txt_Nationalite.Text = ""
                 Else
                    Txt_Nationalite.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
                 End If
     
            End If
            rst_realisateurs.Close
    End Sub
     
     
     
    Private Sub grille()
    ' debut
         ' corps de la grille personnel
         MSF_REALISATEUR.Clear
         entete_grille
         If Lst_DebutLettre = "Toutes" Then
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
         Else
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE "
                    sql = sql + " FROM REALISATEURS"
         End If
         rst_realisateurs.Open sql, cnx
     
         ligne = 0 'nbre de lignes
         If Not rst_realisateurs.EOF Then
                Do
                    ligne = ligne + 1
                    rst_realisateurs.MoveNext
                Loop Until rst_realisateurs.EOF
                MSF_REALISATEUR.Rows = ligne + 1
     
                rst_realisateurs.MoveFirst
                For i = 1 To (ligne)
     
                        MSF_REALISATEUR.Row = i
                        MSF_REALISATEUR.Col = 0
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NUM")
                        MSF_REALISATEUR.Col = 1
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
                        MSF_REALISATEUR.Col = 2
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_PRENOM")) Then
                              MSF_REALISATEUR.Text = " "
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
                        End If
                        MSF_REALISATEUR.Col = 3
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_SEXE")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_SEXE")
                        End If
                        MSF_REALISATEUR.Col = 4
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
                        End If
     
                        MSF_REALISATEUR.Col = 5
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
                        End If
     
                        MSF_REALISATEUR.Col = 6
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
                        End If
     
                        MSF_REALISATEUR.Col = 7
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
                        End If
     
                        MSF_REALISATEUR.Col = 8
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
                        End If
     
                       rst_realisateurs.MoveNext
            Next i
     
         Else
            Lbl_affichage = " aucun emprunteur"
         End If
         rst_realisateurs.Close
     
    End Sub
     
     
    Private Sub Form_Load()
    ' debut
        Connec
         'Remplir de la liste personnel
         Call Liste_DebutLettre
         ' afficher entete grille
          entete_grille
        MSF_REALISATEUR.Enabled = False
    End Sub
     
    Private Sub MSF_REALISATEUR_click()
    ' DEBUT
       recupdetail
     
        If Not MSF_REALISATEUR.Text = "" Then
            ref = MSF_REALISATEUR.Text
            Lbl_affichage = ""
     
            init_boutons
            Cmd_Modifier.Enabled = True
            Cmd_Supprimer.Enabled = True
            Cmd_annuler.Enabled = True
     
            Frame_Realisateurs.Enabled = False
        End If
    End Sub

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il faudrait modifier la requete sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       sql = "select REALISATEURS_NOM from REALISATEURS where REALISATEURS_NOM LIKE '" & Chr(i) & "*' "
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Il serait mieux aussi de ne pas appeler ta requete quand tu remplis ta liste car actuellement elle est lancee 26 fois si je ne dis pas de betise.
    Lance ta requete plutot dans l'evenement Click de ta listbox par exemple.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Bon, je n'avais pas bien lu tout le code
    Dans ce morceau de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Liste_DebutLettre()
    Dim i As Integer
    ' début
        ' remplir la liste des fonctions
         Lst_DebutLettre.Clear
         For i = 65 To 90
            Lst_DebutLettre.AddItem Chr$(i)
        sql = "select REALISATEURS_NOM from REALISATEURS where REALISATEURS_NOM LIKE 'i' "
         Next i
    End Sub
    La ligne commencant pas Sql = ne semble servir à rien. On peut la suprimer sans regret.

    Dans cette partie de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Lst_DebutLettre_click()
    'debut
        init_zones
        MSF_REALISATEUR.Enabled = True
        DebutLettre = Lst_DebutLettre
     
        'alimentation de la grille films
        sql = "SELECT REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_SEXE, REALISATEURS_DDN, REALISATEURS_MORT, REALISATEURS_LIEUDDN, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS"
        sql = sql + "WHERE REALISATEURS_NOM LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%';"
        grille
    End Sub
    tu prepares une requete mémorisée dans la variable sql. cette requete me semble bonne
    mais la partie affichée de ton code ne permet pas de connaitre la portée de ta variable Sql.
    Si tu l'as declarée en global feuille çà peut aller. personellement, j'aurais preféré une variable locale et la transmetre en argument à la procedure grille
    Exemple : Grille sql
    Ce qui obligerait à modifier ta declaration de la procédure grille de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub grille(Sql As String)
    Maintenant dans la procedure grille

    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
    Private Sub grille()
    ' debut
         ' corps de la grille personnel
         MSF_REALISATEUR.Clear
         entete_grille
         If Lst_DebutLettre = "Toutes" Then
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
         Else
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE "
                    sql = sql + " FROM REALISATEURS"
         End If
         rst_realisateurs.Open sql, cnx
     
         ligne = 0 'nbre de lignes
         If Not rst_realisateurs.EOF Then
                Do
                    ligne = ligne + 1
                    rst_realisateurs.MoveNext
                Loop Until rst_realisateurs.EOF
                MSF_REALISATEUR.Rows = ligne + 1
     
                rst_realisateurs.MoveFirst
                For i = 1 To (ligne)
     
                        MSF_REALISATEUR.Row = i
                        MSF_REALISATEUR.Col = 0
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NUM")
                        MSF_REALISATEUR.Col = 1
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
                        MSF_REALISATEUR.Col = 2
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_PRENOM")) Then
                              MSF_REALISATEUR.Text = " "
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
                        End If
                        MSF_REALISATEUR.Col = 3
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_SEXE")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_SEXE")
                        End If
                        MSF_REALISATEUR.Col = 4
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
                        End If
     
                        MSF_REALISATEUR.Col = 5
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
                        End If
     
                        MSF_REALISATEUR.Col = 6
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
                        End If
     
                        MSF_REALISATEUR.Col = 7
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
                        End If
     
                        MSF_REALISATEUR.Col = 8
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
                        End If
     
                       rst_realisateurs.MoveNext
            Next i
     
         Else
            Lbl_affichage = " aucun emprunteur"
         End If
         rst_realisateurs.Close
     
    End Sub
    tu redefinis completement ta requete dans sql,sans tenir compte du boulot déjà fait sur la variable sql.

    Bon, encore un petit conseil
    si tu mets en premiere ligne de ton code, cette ligne
    Tu obliges vb à verifier que toutes les variables utilisées ont bien été declarées, Ca n'a l'air de rien, mais cette simple ligne va boulverser ta vie de programmeur.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour, merci de vos conseils je vais les appliquer et voir ce que cela donne et je vous tiens au courant

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour, j'ai essayé de modifier mon code mais sans succès. Je n'arrive toujours pas à afficher ma liste par ordre alphabétique. Je débute en vb donc je patauge un peu. J'ai supprimé ma ligne inutile dans lst_debutLettre mais pour alimenter ma grille j'ai essayé plein de truc mais rien.
    J'ai voulu esayer de faire une variable locale comme signalé par grille (sql as string) mais cela n'a pas fonctionné.
    J'avais écris ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub grille(sql As String)
    ' debut
         ' corps de la grille personnel
         MSF_REALISATEUR.Clear
         entete_grille
         If Lst_DebutLettre = "Toutes" Then
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE "
                    sql = sql + "FROM REALISATEURS "
         Else
     
                    sql = sql
         End If


    Sinon, j'ai refait la même chose pour l'alimentation de ma grille qu'au départ sauf que j'ai rajouté dans requête ORDER BY REALISATEURS_NOM. Ce qui est bien car cela les classent par ordre alphabétique mais je voudrais qu'il m'affiche juste les réalisateurs commençant par une lettre sélectionnée et non tout. Là je rame grave !!
    Désolé mais comme je l'ai dis je débute tout juste le vb donc toutes les critiques constructives je les accepte avec plaisir. Merci de prendre le temps de m'aider.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    tu peux mettre sorted a true dans les propriete de ta listbox.

    il effectue le trie.

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    merci Francky57 , je l'avais déjà mis.

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    je ne sais pas si j'ai vraiment tout compris, mais (si oui), je verrais les choses ainsi :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub function fairesql(lettre As String) as string
    ' debut
         ' corps de la grille personnel
         MSF_REALISATEUR.Clear
         entete_grille
         fairesql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
                    If Lst_DebutLettre = "Toutes" Then
                     ' je ne vois pas quoi rajouter (pas nécessaire)
                    Else
                      fairesqlsql = fairesql & where REALISATEURS_NOM LIKE '" & lettre & "*' "
         End If
     
    '........ etc...
    fonction que j'appelerais ainsi, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = fairesql("toutes")
    ou, pour passer "N" :
    puis j'utiliserais comme je l'entends la variable sql pour faire mon recordset et remplir la grille.

  10. #10
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je viens de tenter d'exécuter ton code, mais le compilateur ne l'a pas apprécié.
    Cà ressemble assez à ce que mon garçon programmait à 10 ans : un mélange de code élaboré et de code de débutant. En fait il trichait en prenant un programme existant et en le modifiant pour tenter de l'adapter à sa sauce sans rien y connaitre à la programmation. Ce n'est pas vraiement une mauvaise approche à condition de chercher à comprendre pourquoi çà ne marche pas, par une recherche personelle.
    Il faut que tu commences par le baba en lisant quelques trucs sur la programmation avec vb. Tu trouveras plein de cours sur vb sur ce site. lis les, et vois ce qui peut te servir.
    Ton code est par trop bizare pour qu'on puisse essayer de le dépatoullier, sans faire le boulot à ta place, ce qui ne t'apporterais ancun savoir supplémetaire.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  11. #11
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    Bonjour, merci pour vos réponses.

    Ce programme je le réalise pour moi personnellement. J'avais réalisé un programme en cours qui ressemblait à cela (un travail que j'ai repris car un élève n'avait pas eu le temps de finir que j'ai terminé avec ma prof).


    Donc, comme je l'ai dit je débute dans la programmation et essaye de comprendre la logique. Dans mon code, je sais bien qu'il ne prends pas en compte ma requête qu'il y a un truc qui cloche. J'ai également pensé faire une requête pour chaque lettre sélectionnée mais je pensais que cela aurait une répétition et un encombrement dans le code. Voilà, je continue à chercher des solutions et merci de votre aide

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    fait la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    sql= " select * from realisateur where realisateur_nom like '" & lst_debutlettre.value & " %' "
    enfait pour rechercher qu'avec le debut tu doit faire " like 'b%' " pour chercher tout ce qui commence par b par exemple.

  13. #13
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    @Francky57 : lorsque j'effectue la requête , j'obtiens le message d'erreurs suivant : "méthode ou membre de données introuvable".
    En revanche, lorsque je fais like 'b%' ou une lettre cela fonctionne bien mais dans ce cas-là, il faudrait que je fasse un selon cas pour chaque lettre ou bien un si sinon. Je pense qu'ici le selon cas serait plus préférable en attendant de trouver mieux. Qu'en pensez-vous ?
    Merci beaucoup.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    lst_debut.value change le en lst_debut.text

    je me suis trompé

  15. #15
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    nan désolé cela ne marche pas il n'affiche rien lorsque je sélectionne une lettre

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 95
    Points : 71
    Points
    71
    Par défaut
    tu la mis où la requète??

    essaye de changer les ' par des "

  17. #17
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut
    j'ai mis ici la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub grille()
    ' debut
         ' corps de la grille personnel
         MSF_REALISATEUR.Clear
         entete_grille
         If Lst_DebutLettre = "Toutes" Then
                    sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
         Else
                    sql = " select * from realisateurS where realisateurS_nom like '" & Lst_DebutLettre.Text & " %' "
     
     
         End If
    J'ai remplacé les côtes par des doubles mais rien juste un message d'errreur

  18. #18
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il faudrait que tu mettes déjà une value Toutes dans ton list box

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Liste_DebutLettre()
    Dim i As Integer
    ' début
        ' remplir la liste des fonctions
         Lst_DebutLettre.Clear
         Lst_DebutLettre.AddItem  "Toutes"
         For i = 65 To 90
            Lst_DebutLettre.AddItem Chr$(i)
         Next i
    End Sub
    En suite ta requete est mémorisée dans une variable non déclarée : Sql

    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
    Private Sub grille()
    ' debut
         ' corps de la grille personnel
      Dim Sql as String 'Dèjà il faut initaliser la variable
                              'Comme tu as mis option explit, vb remd la chose obligatoire
       'on commence par remplir le début de la requete
       'qui sera commune à la demande Toutes et aux demandes par lettre
       Sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
     
         MSF_REALISATEUR.Clear
         entete_grille
         If Lst_DebutLettre <> "Toutes" Then
            'On complete la requete pour les demandes différentes de Toutes
                    sql = Sql & "where realisateurS_nom like '" & Lst_DebutLettre.List(DebutLettre.ListIndex) & "%' "
         End If
         'maintenant on peut exécuter la requete
         rst_realisateurs.Open sql, cnx
         'maintenant on peut lire le resutat de la requete pour remplir la grille
         rst_realisateurs.MoveFirst
         Do While Not rst_realisateurs.EOF  'tant que l'on n'est pas en fin de resultat
              'remplir une ligne de la grille
              'çà je te le laisse
              '
              'Lire l'enregistrement suivant
             rst_realisateurs.MoveNext
        Loop
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  19. #19
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 38
    Points : 12
    Points
    12
    Par défaut erreur de syntaxe maintenant
    Bonjour, voilà j'ai essayé de résoudre mon problème depuis 2 jours mais sans succès. Il me dit toujours erreur d'exécution. J'ai cherché sur le net, j'ai testé les réponses que j'ai trouvé mais rien.

    VOici, la partie qui bugge :

    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
    Private Sub grille()
    ' debut
         ' corps de la grille film
          
          Dim sql As String 'Dèjà il faut initaliser la variable
                              
         'début de la requête pour effectuer la recherche
              sql = "SELECT REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS ORDER BY REALISATEURS_NOM"
       
         MSF_REALISATEUR.Clear
         entete_grille
         
         'si le choix est différent du mot "toutes"
         If Lst_DebutLettre <> "Toutes" Then
         
                   'on affiche alors le résultat demandé
                   sql = sql + " WHERE REALISATEURS_NOM LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
         End If
           
         'execution de la requête qui passe par un curseur de type public déclaré dans le module variable
        rst_realisateurs.Open sql, cnx 
         'MsgBox ("ok") message de test
         'lecture du résultat enregistré
         rst_realisateurs.MoveFirst
         
         'initialisation du nbre de ligne de la grille
         ligne = 0
         
        Do While Not rst_realisateurs.EOF    'tant que l'on n'est pas en fin de resultat
              'on remplit les lignes de la grille
              
                    ligne = ligne + 1
                    rst_realisateurs.MoveNext
                    rst_realisateurs.MoveFirst
                    
                    MSF_REALISATEUR.Rows = ligne + 1
                For i = 1 To (ligne)
               
                        MSF_REALISATEUR.Row = i
                        MSF_REALISATEUR.Col = 0
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NUM")
                        MSF_REALISATEUR.Col = 1
                        MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
                        MSF_REALISATEUR.Col = 2
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_PRENOM")) Then
                              MSF_REALISATEUR.Text = " "
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
                        End If
                        MSF_REALISATEUR.Col = 3
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_SEXE")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                              MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_SEXE")
                        End If
                        MSF_REALISATEUR.Col = 4
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                              MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
                        End If
    
                        MSF_REALISATEUR.Col = 5
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
                        End If
    
                        MSF_REALISATEUR.Col = 6
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                               MSF_REALISATEUR.Text = ""
                        Else
                               MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
                        End If
    
                        MSF_REALISATEUR.Col = 7
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
                        End If
    
                        MSF_REALISATEUR.Col = 8
                        If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                                MSF_REALISATEUR.Text = ""
                        Else
                                MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
                        End If
                            
                       rst_realisateurs.MoveNext
            Next i
    
        
             Lbl_affichage = " aucun réalisateur !"
        
             Exit Do
             
             'Lire l'enregistrement suivant
             rst_realisateurs.MoveNext
        Loop
        
         rst_realisateurs.Close
    
    End Sub
    Il s'agit de la partie soulignée en bleue il me marque toujours erreur de syntaxe. Opérateur absent dans l'expression 'REALISATEURS_NOM WHERE REALISATEURS_NOM LIKE ' A%".

    J'ai essayé de mettre LIKE ' % ... '%", remplacer le % par une étoile, remplacer le ' par " mais rien.
    Merci

  20. #20
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Heu, il me semble que la clause ORDER BY doit passer après la caluse WHERE

    ce qui donnerait plutot quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
             sql = "SELECT REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "   
         MSF_REALISATEUR.Clear
         entete_grille
     
         'si le choix est différent du mot "toutes"
         If Lst_DebutLettre <> "Toutes" Then
     
                   'on affiche alors le résultat demandé
                   sql = sql + " WHERE REALISATEURS_NOM LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%'"
         End If
         Sql = Sql & " ORDER BY REALISATEURS_NOM"
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Trie ordre alphabétique Listbox
    Par justin92330 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/05/2018, 14h02
  2. Réponses: 1
    Dernier message: 08/08/2012, 11h39
  3. [XL-2003] Ordre alphabétique dans une listbox
    Par punkisnotdead dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/08/2009, 10h24
  4. Réponses: 1
    Dernier message: 27/05/2006, 23h13
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

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