Bouton suppression

Fermé
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 - 23 janv. 2013 à 00:14
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 - 29 janv. 2013 à 22:03
Bonjour,

Avec access 2007, sur une liste a selection mutilpe, je voudrai effacer les enregistremnts selectionnés. Pouvez vous m'aider en me fournissant le code du bouton d'effecement.
Je ne connais trés peu le VBA
Je vous remercie

6 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
23 janv. 2013 à 08:20
Bonjour castours,

Il faut être certain que tous les champs de l'enregistrement ne proviennent que d'une seule table .. il te faut l'id .. et par conséquent .. le supprimer.

Si cet enregistrement provient de plusieurs table .. c'est plus fastidieux. Il faut s'assurer de supprimer chaque enregistrement de chaque table SI et seulement SI l'enregistrement de la table X n'est pas utilisé par un autre enregistrement OU pourrait être utilisé par un autre enregistrement.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
23 janv. 2013 à 17:04
Bonjour
Merci de m'avoir repndu
Oui, j'ai deux tables qui sont liées de un à plusieurs.
C'est dans la 2 eme qui me sert de selection par un oui non pour supprimmer les enregistrements de la premiere.
Dans un formulaire, puis dans liste independante à selection multiple, j'ai les enregistrements a supprimer. Je selectionne ceux qui m'interesse que je voudrai supprimer par le bouton.
Peux tu, si tu le veux me traduire cela en VBA pour le bouton de suppression.
Je te remercie
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 09:06
Bonjour castours,

Si je comprends bien, ce sont les éléments de la table 2 (multi) qui, quand ils sont sélectionnés, te disent, il faut supprimer / il ne faut pas supprimer.

En général, c'est dans l'autre sens que l'on fait les actions.

Admettons :
Un enregistrement de la table 1 correspond les enregistrements de la table 2 .. exemple:
1 .. 1, 5, 6, 18, 20.
2 .. 2, 4, 7, 8, 9, 12, 13, 14, 15, 17.
3 .. 3, 11, 16.
4 .. 10, 19.
5 .. 21, 22.

Les nombres en gras sont ceux que tu as sélectionnés dans ta liste.
Table1, enregistrement 1 :: table2, enregistrement 6.
Le seul enregistrement susceptible d'être supprimé est table1, enregistrement 4 avec les enregistrements 10 et 19 de la table 2.

Q.: Il faut comprendre qu'il y aura des orphelins .. ou bien, il faut également supprimer tous les enregistrements de la table2 dont la clef correspond à l'Id de la table 1 ?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
25 janv. 2013 à 18:27
Bonjour Heliotte
Merci de ta reponse
C'est bien ce que je veux faire. Effacer l'id de la table 1 qui entraine la table 2 par le relation un a plusieurs. C'est cela que j'essaie de faire.
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
25 janv. 2013 à 18:46
Bonsoir castours,

Pour supprimer un enregistrement de la table 1, il faut d'abord récupéré son identifiant (Id) et commencer par supprimer tous les enregistrements de la table 2 contenant la clé secondaire égale à l'identifiant de la table 1.
Une fois ces enregistrements supprimés, il ne reste plus qu'à supprimé l'enregistrement dont l'identifiant est Id de la table 1.

Connais-tu l'identifiant de l'enregistrement de la première table ou dois-tu le retrouver par le code ?
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
25 janv. 2013 à 19:25
J'ai l'enregistrement complet dans une liste a choix multiple sur les 2 tables.
J'ai un champs oui nom qui me permet de faire la selection des enregistrements a effecer
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
26 janv. 2013 à 08:40
Bonjour castours,

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D'abord faire une requête de sélection .. tu la convertira en requête de suppression uniquement si c'est ce résultat que tu attends !!!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DELETE table1.Id AS Id1, table1.Nom AS Nom1, table2.Id AS Id2, table2.ref_table1Id AS ref_Id1, table2.Nom AS Nom2, table2.ref_table1Id
FROM table1 RIGHT JOIN table2 ON table1.Id = table2.ref_table1Id
WHERE (((table2.ref_table1Id)=1));
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 janv. 2013 à 10:50
Bonjour
J'ai essayé ceci dans un bouton commande
Mais une erreur de compil
Sub ou fonction nom defini
Ca bloque sur la condition Where

Sub Cde_Supprime_Click()

'DoCmd.Delete ' UtilisateursClique.Nom, UtilisateursClique.Prénom, MembresClique.[Actif]
DoCmd.RunSQL "Delete FROM UtilisateursClique AS idUtilisateurs,UtilisateursClique.Nom AS Nom,UtilisateursClique.Prénom AS Prénom RIGHT JOIN MembresClique ON UtilisateursClique.idUtilisateurs=MembresClique.idUtilisateurs"
WHERE MembresClique.IdMembres.[Actif] = 1


End Sub
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
26 janv. 2013 à 11:39
Je recommence car j'ai fait une groooosse erreur. Mille excuses.

Fait une copie de ta base de données avant avant d'utiliser cette requête !!!

DELETE NomDeLaTableDontLesEnregistrementsVontEtreSupprimé.*
FROM UtilisateursClique RIGHT JOIN MembresClique ON UtilisateursClique.idUtilisateurs=MembresClique.idUtilisateurs
WHERE MembresClique.IdMembres.[Actif] = 1


!!! MembresClique.IdMembres.[Actif] !!!
est à remplacer par le NomDeLaTable.NomDuChamp
** rien d'autre **
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 janv. 2013 à 16:07
Heliotte
Merci pour ton aide
Comme je ne comprends pas tout, je te mets mes deux tables et le formulaire
Dans ce lien
https://www.cjoint.com/c/CAAqb1v0jTl
Dans le formulaire , je choisis 2 ou 3 lignes puis le bouton effface
C'est ce que j'essaie de realiser.
Le Bouton est vide de code
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
26 janv. 2013 à 19:20
Bonsoir castours,

Je n'ai que Access2003 .. est-il possible de le convertir dans cette version avec Access2007 ?
Si oui, veux-tu bien le faire et le reposter ?

Si non, me donner la structure des deux tables, leurs liaison, quelques enregistrements et un print srceen du formulaire .. j'essaierai de me débrouiller avec ça ..
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
26 janv. 2013 à 20:41
Voila l'exemple en 2003
https://www.cjoint.com/c/CAAuN06OzCY
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
27 janv. 2013 à 13:06
Bonjour castours et bon dimanche,

Je viens de regarder la base de données. Je ne sait pas sur quel critères tu t'es basé pour créer les deux tables .. mais si j'en crois mon rapide coup d'oeil, tu ne devrais n'avoir qu'une seule table :

- à un T_UtilisateursClique correspond une et une seule Désignation.
ET
- à un T_UtilisateursClique correspond un et un seul Actif (vrai ou faux / Oui ou Non).

Si c'est la cas, tu ne dois pas te compliquer la vie pour rien et tu peux inclure les champs de la table T_MembresClique dans la table T_UtilisateursClique.

Donne-moi les règles pour les deux champs précités (Désignation et Actif).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
Modifié par castours le 27/01/2013 à 14:39
Bonjour
Comme c'est uhne gestion de membre associatif, il se peut qu'il est plusieurs fonctions a des dates differentes. Voila mon raisonnement.
Cordialement
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
27 janv. 2013 à 19:05
Bonsoir castours,

Autrement dit, tu veux garder l'historique.
Ok

J'ai oublier de te donner le lien https://docs.microsoft.com/fr-fr/office/troubleshoot/access/retrieve-items-in-multiple-selection-list-box
Microsoft y parle des éléments sélectionnés .. comment le récupérer
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
27 janv. 2013 à 21:35
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
28 janv. 2013 à 08:35
Bonjours castours,

J'ai regardé au lien .. pas mal du tout !
Merci beaucoup.
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
28 janv. 2013 à 22:58
Bonjour
J'ai reussi a faire fonctionné le bouton grace au forum de self access
Voic le code
Dim i As Variant, SQL As String

For Each i In Me.Zlist.ItemsSelected
SQL = "DELETE * FROM [T_MembresClique] WHERE [IdMbre] = " & Me.Zlist.ItemData(i)
CurrentDb.Execute SQL
SQL = "DELETE * FROM [T_UtilisateursClique] WHERE [IdUtil] = " & Me.Zlist.ItemData(i)
CurrentDb.Execute SQL
Next
End Sub
0
castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
29 janv. 2013 à 22:03
Bonjour Heliotte
J'aii le code dans le bouton mais access affiche erreur de syntaxe mais efface quande la ligne selectionnée
Voici le code
For Each i In Me.Zlist.ItemsSelected

'BLOQUE ICI SUR LA CONDITION WHERE.Dans le message [IdMbre]= ETAIT MENTIONNE
Les Id Sont Numerique Est la bonne syntaxe

SQL = "DELETE * FROM [T_MembresClique] WHERE [IdMbre] = " & Me.Zlist.ItemData(i)
CurrentDb.Execute SQL

'CurrentDb.Execute SQL
SQL = "DELETE * FROM [T_UtilisateursClique] WHERE [IdUtil] = " & Me.Zlist.ItemData(i)
CurrentDb.Execute SQL


Next


Merci de ton aide
0