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

Access Discussion :

Suppression multiple à partir Zone de Liste


Sujet :

Access

  1. #1
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut Suppression multiple à partir Zone de Liste
    Bonjour à tous,

    Voilà je souhaiterai à partir d'une zone de liste faire une multi sélection et ensuite supprimer les lignes sélectionnées.

    Je pensai à ce code :

    Private Sub Supp_Mess_Click()

    Dim MaBase As Database
    Dim StrSqlDelete As String
    Dim i As Long

    Set MaBase = CurrentDb

    For i = 0 To Me.Lst_MessNonAffect.ListCount - 1
    If Me.Lst_MessNonAffect.Selected(i) Then

    StrSqlDelete = " Delete Tbl_RegrOutlook.NumAuto, Tbl_RegrOutlook.Nom_Client, "
    StrSqlDelete = StrSqlDelete & " Tbl_RegrOutlook.CodeClient, Tbl_RegrOutlook.Commercial, "
    StrSqlDelete = StrSqlDelete & " Tbl_RegrOutlook.Date, Tbl_RegrOutlook.Message, Tbl_RegrOutlook.Sujet, "
    StrSqlDelete = StrSqlDelete & " Tbl_RegrOutlook.DateMAJ, Tbl_RegrOutlook.Maj_CpteRendu, "
    StrSqlDelete = StrSqlDelete & " Tbl_RegrOutlook.ClientProspect FROM Tbl_RegrOutlook "
    StrSqlDelete = StrSqlDelete & " Where ((Tbl_RegrOutlook.NumAuto) = '" & Me.Lst_MessNonAffect & ";"
    Debug.Print StrSqlDelete
    MaBase.Execute StrSqlDelete, dbFailOnError

    End If
    Next i

    End Sub
    Malheureusement j'ai une message d'erreur lorsque j'éxécute la requête.

    Pouvez vous m'aider à résoudre ce problème.

    Daniel

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    On dirait qu'il y a un caractère en trop. Le guillement simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrSqlDelete = StrSqlDelete & " Where ((Tbl_RegrOutlook.NumAuto) = '" & Me.Lst_MessNonAffect & ";"
    A+

  3. #3
    Membre expérimenté
    Avatar de Papy Turbo
    Homme Profil pro
    Développeur Office/VBA
    Inscrit en
    Mars 2004
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Office/VBA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 822
    Points : 1 709
    Points
    1 709
    Par défaut
    P.S. : à tout hasard, tu peux remplacer tous les noms de champs par une simple étoile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
             StrSqlDelete = "Delete * FROM Tbl_RegrOutlook "
            StrSqlDelete = StrSqlDelete & " Where ((Tbl_RegrOutlook.NumAuto) = " & Me.Lst_MessNonAffect & ";"
    sera déjà + facile à déboguer , sachant que, lors d'une suppression, tous les champs sont supprimés.

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    voici un code pour transformer une sélection multiple en bloc In pour un SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim varElt As Variant
        Dim str As String
        
        For Each varElt In Me.Liste0.ItemsSelected
            str = str & """" & Me.Liste0.ItemData(varElt) & ""","
        Next varElt
        
        str = " in (" & Left(str, Len(str) - 1) & ") "
        MsgBox str
    Et c'est ce bloc IN qui servira pour ta clause WHERE

  5. #5
    Membre habitué Avatar de Daniel MOREAU
    Inscrit en
    Décembre 2004
    Messages
    372
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 372
    Points : 142
    Points
    142
    Par défaut
    Bonjour à tous,

    Merci pour vos réponses, et surtout merci Caféine, ton code fonctionne parfaitement bien.

    Super et merci encore.

    Daniel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Créer table à partir séléction multiple d'une zone de liste
    Par Brasileiro dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2012, 22h50
  2. [XL-2002] Impression en PDF suite à sélection multiple dans zone de liste
    Par lumpys dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/10/2011, 21h15
  3. probleme suppression ligne dans zone de liste
    Par maclolo2 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 05/08/2011, 14h53
  4. [AC-2000] Suppression d'un enregistrement à partir d'une zone de liste
    Par DeFCrew dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/09/2009, 15h11
  5. requête à partir d'une zone de liste multiple??
    Par chambon.denis dans le forum Access
    Réponses: 5
    Dernier message: 23/01/2006, 10h46

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