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 :

Suppression à partir d'une liste déroulante


Sujet :

VBA Access

  1. #1
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut Suppression à partir d'une liste déroulante
    Bonjour à tous

    Je n'arrive pas à trouver ce que je cherche sur le site donc je viens vous questionner diréctement.

    Je souhaite supprimer sur click un enregistrement d'une table. Le truc c'est que cet enregistrement est sélectionné dans une liste déroulante.

    Quand je suis dans ma procedure sur click de mon bouton supprimer je ne sais pas ce que je dois faire en vba pour aller chercher l'enregistrement séléctionné et en faire l'enregistrement courant.

    La suite je sais très bien comment faire mais c'est juste çà.

    Merci d'avance.

    Kihmé Xs

  2. #2
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Salut Kihmé Xs,

    Il faut que tu ailles supprimer l'enregistrement directement dans la table, en t'appuyant sur ce qui est selectionné dans ta liste déroulante.
    Ca consiste dire a Access: Dans la table Untel, supprime-moi la ligne dont l'enregistrement Untel a pour valeur ce qui est lue dans la liste déroulante.

    Si c'est une petite manip isolée (pas de boucle), je te conseille une simple commande SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.RunSQL "DELETE [ma_table].* FROM [ma_table] WHERE [ma_table].[mon_champ]='" & me.ma_liste_deroulante & "'"
    Si tu veux ensuite rafraichir ta liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_liste_deroulante.requery
    Bien a toi !

  3. #3
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    ...Je souhaite supprimer sur click un enregistrement d'une table
    Voici une facon de procéder:
    Sur l'événement "Sur clic" de ta Zone liste déroulante (Modifiable1) :
    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
    Private Sub Modifiable1_Click()
    'On supprimme l'apparition du message de confirmation
    DoCmd.SetWarnings False
    'Ici on va supprimer l'enregistrement sélectionné
    Dim sSQL As String
    sSQL = "DELETE * FROM MaTable WHERE N° = " & Me.Modifiable1.Value
    DoCmd.RunSQL sSQL
     
    'On va rafraichir les données de la liste déroulante
    Me.Refresh
    Me.Modifiable1.Requery
     
    'On réactive le message de confirmation
    DoCmd.SetWarnings True
    End Sub
    Ici "MaTable correspond au nom de ta table ou se trouve l'enregistrement a effacer...

    Bonne continuation...

  4. #4
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    Merci bien!

    Le truc c'est que je dois le faire sur click mais le click n'est pas celui de la liste déroulante.
    La séléction est faite à partire de la liste mais la suppression doit être faite sur le click d'un bouton supprimer.
    Et donc c'est la que je me retrouve bloqué. C'est comment dans ma procédure, récupérer ce que renvoi la liste déroulante que je ne sais pas faire. A mon avis ce n'est pas grand chose mais il doit bien y avoir une instruction pour ça.

  5. #5
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Le code que te donne FreeAccess marche tres bien pour un bouton différent.

    Si tu as un bouton Supprimer, tu mets le code de FreeAccess dans l'évenement On_Click de ton bouton.
    Ca te donnera:
    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
    Private Sub Supprimer_Click() 
    'On supprimme l'apparition du message de confirmation 
    DoCmd.SetWarnings False 
     
    'Ici on va supprimer l'enregistrement sélectionné 
    Dim sSQL As String 
    sSQL = "DELETE * FROM MaTable WHERE N° = " & Me.Modifiable1.Value 
    DoCmd.RunSQL sSQL   
     
    'On va rafraichir les données de la liste déroulante 
    Me.Refresh 
    Me.Modifiable1.Requery   
    'On réactive le message de confirmation 
    DoCmd.SetWarnings True 
    End Sub
    La commande "DELETE * FROM MaTable et..." dit a Access: Dans la table MaTable, supprime moi toute la ligne pour laquelle le champ a pour valeur, ce qui est selectionné dans ma liste déroulante (Me.Modifiable1.Value)
    C'est pas plus compliqué que ca !

  6. #6
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    ah ok, j'essais de suite.

    Au fait le sql est "mon langage fort"... Ce qui n'est pas le cas du VBA

  7. #7
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    que signifie Me.?
    c'est une variable comme RS?

  8. #8
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    Lors d'une exécution il semble avoir un problème sur l'éxecution de la requete

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 238
    Points : 236
    Points
    236
    Par défaut
    Bonjour,

    Me. n'est pas une variable ; cela veut dire l'objet sur lequel tu es en train de travailler ; dans ton cas c'est ton formulaire contenant la liste déroulante.

    Bonne journée.

  10. #10
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonsoir,
    Lors d'une exécution il semble avoir un problème sur l'éxecution de la requete
    Oui, c'est bien...... et le jeu c'est d'essayer de trouver quel type d'erreur tu as ....

    Donc pour aider.....Quel est le type de donnée contenue dans la colonne utilisée comme valeur du contrôle de ta Zone de liste déroulante ==> "Texte" ou "Numérique"
    Dans le cas de mon exemple, N° était de type "Numérique"

    Pour d'autre type de données, tout est dans ce lien:
    http://access.developpez.com/faq/?page=SQL#PbTypVar

    Bonne continuation...

  11. #11
    Membre confirmé Avatar de Kihmé Xs
    Inscrit en
    Janvier 2007
    Messages
    549
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2007
    Messages : 549
    Points : 491
    Points
    491
    Par défaut
    j'ai procédé autrement et j'ai finit par avoir quelques choses qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub b_supprimer_clt_Click()
     
    Dim supp As Database
    Dim RS As DAO.Recordset
    Set supp = CurrentDb()
    Set RS = supp.OpenRecordset("client")
     
    If s_liste_clt.ListIndex > -1 Then
        supp.Execute "delete from client where code_clt = " & s_liste_clt.Column(0)
        MsgBox ("enregistrement supprimé")
        s_liste_clt.Requery
    Else
        MsgBox ("Sélectionez un enregistrement")
    End If
     
    End Sub

    Merci bien pour votre aide

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

Discussions similaires

  1. [MySQL] Suppression d'un élément à partir d'une liste déroulante
    Par aqr75 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/07/2009, 17h42
  2. Réponses: 4
    Dernier message: 19/07/2006, 11h07
  3. [MySQL] Enregistrer dans une base de données à partir d'une liste déroulante
    Par snakejl dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 17/05/2006, 17h32
  4. Réponses: 32
    Dernier message: 22/09/2005, 11h40
  5. Réponses: 3
    Dernier message: 25/04/2005, 16h26

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