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

IHM Discussion :

[VBA] Supprimer une ligne de table en fonction de la selection dans une zone de liste


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 38
    Points : 17
    Points
    17
    Par défaut [VBA] Supprimer une ligne de table en fonction de la selection dans une zone de liste
    Bonjour,

    j'ai un formulaire listant tous les enregistrements d'une table par l'intermédiaire d'une zone de liste.

    Il peut arriver qu'une ligne doit être ajoutée dans la table, j'ai réussi à faire cela.

    Inversement, j'aimerais pouvoir supprimer, par un clic sur un bouton, un enregistrement en fonction de la ligne séléctionnée dans ma zone de liste.

    Comment puis-je réaliser cette fonction, sachant que j'ai réussi à prendre la valeur dans une colonne donnée grâce à la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub lstmanageractif_GotFocus()
    lstmanageractif.Column (2)
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 44
    Points : 34
    Points
    34
    Par défaut
    en partant du principe que ta base possede un identifiant (une clef primaire) et que c'est bien cette valeur que tu recuperes, alors ceci devrais pouvroir t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      With DoCmd
        .SetWarnings False   'Désactive les alertes
        .RunSQL ("delete * from [Nom de ta table ] where [Nom de ta clef] =" & lstmanageractif.Column (2) & ";")
        .SetWarnings True
      End With

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Tu peux aussi t'inspirer de ceci : http://access.developpez.com/sources...=frms#supprEnr
    (\ _ /)
    (='.'=)
    (")-(")

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    Merci à vous 2,

    j'ai donc inséré ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Commande11_Click()
      If IsNull(Me!lstmanageractif) Then
          MsgBox "Aucun élément sélectionné dans la liste.", vbCritical
      Else
          DoCmd.SetWarnings False 'Facultatif
          DoCmd.RunSQL "DELETE TAccountManagers.* FROM tbl WHERE TAccountManagers.Idmanager=""" & Me!MaZoneDeListe & """;"
          DoCmd.SetWarnings False 'Facultatif
         Me.lstmanageractif.Requery
      End If
    End Sub
    Mais j'ai une erreur qui donne : "impossible de trouver le champs 'mazonedeliste" auquel il est fait référence dans votre expression"



    Auparavant j'obtenais une erreur avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lstmanageractif.Column (2)
    où j'obtenais cela : erreur de compilation, utilisation incorrecte de la propriété

    Savez vous de ou cela peut venir?

    Merci d'avance

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Remplace 'mazonedeliste' par le vrai nom de ta zone de liste.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lstmanageractif.Column (2)
    Enlève l'espace avant les parenthèses.
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    l'espace entre les parenthèses se met automatique.

    J'ai bien modifier le code pour obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        DoCmd.SetWarnings False 'Facultatif
        DoCmd.RunSQL "DELETE TAccountManagers.* FROM TAccountManagers WHERE TAccountManagers.Idmanager=""" & Me!lstmanageractif & """;"
        DoCmd.SetWarnings False 'Facultatif
        Me.lstmanageractif.Requery
    M'ai j'obtiens l'erreur suivante : "type de données incompatibles dans l'expression du critère"

  7. #7
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Oui car mon code fonctionne pour un critère de type String alors que le tien est de type numérique.

    Il te suffit d'ôter les guillemets, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "DELETE TAccountManagers.* FROM TAccountManagers WHERE TAccountManagers.Idmanager=" & Me!lstmanageractif & ";"
    (\ _ /)
    (='.'=)
    (")-(")

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2005
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 38
    Points : 17
    Points
    17
    Par défaut
    Merci bcp pour ton aide FRED G.

    Merci pour ta patience!

    Quentin

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 27
    Points : 44
    Points
    44
    Par défaut
    je relance cette discussion pour savoir comment on peut supprimer plusieurs enregistrement au mm temps?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/12/2010, 13h09
  2. Réponses: 1
    Dernier message: 02/10/2009, 16h15
  3. Réponses: 3
    Dernier message: 18/01/2007, 19h19
  4. taille max de nb de caractère dans une ligne de table mysql
    Par zidenne dans le forum Administration
    Réponses: 1
    Dernier message: 01/09/2006, 12h04
  5. Réponses: 2
    Dernier message: 19/05/2006, 19h42

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