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.
    Développement Office, support technique, assistance, sur place (Loire atlantique, Vendée, Maine et Loire) ou à distance.

  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
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  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