Vba sur access

Bonjour
Je dois faire un projet sur access et utiliser vba.
Mais certaines formules ne fonctionnent pas et je ne comprends pas ce qui n'est pas correct.
Essentiellement pour les suppressions.
Merci de votre aide

3 réponses

  1. Bonjour,

    Peut-tu envoyer le code qui ne fonctionne pas ?

    Si ce que tu recherche et de supprimer un enregistrement je te propose cette fonction :

    Public Function Suprimmer()
    If (MsgBox("Voulez-vous vraiment supprimer à tout jamais cet enregistrement?", vbYesNo + vbCritical, "Prenez la bonne décision")) = vbYes Then
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdDeleteRecord
    DoCmd.SetWarnings True
    Else

    End If

    End Function
    1. supprimer un motif:

      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module

      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String
      Sub Initbase()
      Set base = CurrentDb()

      End Sub
      Function SuppressionMotif(LibelleMotif As Integer) As Integer

      ' Suppression d'un Motif
      Call Initbase
      SuppressionMotif = 0
      requeteSql = "Delete From MOTIF (LibelleMotif) values "
      requeteSql = requeteSql & "('" & LibelleMotif & "');"
      base.Execute (requeteSql)
      SupprimerMotif = base.RecordsAffected ' Renvoie le nb d'enregistrements modifiés
      Call CloseBase
      End Function

      supprimer un prof:
      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module
      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String

      Sub Initbase()
      Set base = CurrentDb()
      End Sub

      Function SuppressionProf(Nom As String, Prenom As String)

      ' Suppression d'un professeur
      Call Initbase
      SuppressionProf = 0

      requeteSql = "Delete From Professeur (nom, Prenom) values "
      requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"
      base.Execute (requeteSql)
      SuppressionProf = base.RecordsAffected 'Renvoie le nb d'enregistrements modifiés
      Call CloseBase

      End Function
    2. supprimer un motif:

      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module

      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String
      Sub Initbase()
      Set base = CurrentDb()

      End Sub
      Function SuppressionMotif(LibelleMotif As Integer) As Integer

      ' Suppression d'un Motif
      Call Initbase
      SuppressionMotif = 0
      requeteSql = "Delete From MOTIF (LibelleMotif) values "
      requeteSql = requeteSql & "('" & LibelleMotif & "');"
      base.Execute (requeteSql)
      SupprimerMotif = base.RecordsAffected ' Renvoie le nb d'enregistrements modifiés
      Call CloseBase
      End Function

      supprimer un prof:
      Option Compare Database
      Option Explicit
      ' Les variables suivantes sont utilisables dans tous les sub et function de ce module
      Dim base As DAO.Database
      Dim resultatSql As DAO.Recordset
      Dim requeteSql As String

      Sub Initbase()
      Set base = CurrentDb()
      End Sub

      Function SuppressionProf(Nom As String, Prenom As String)

      ' Suppression d'un professeur
      Call Initbase
      SuppressionProf = 0

      requeteSql = "Delete From Professeur (nom, Prenom) values "
      requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"
      base.Execute (requeteSql)
      SuppressionProf = base.RecordsAffected 'Renvoie le nb d'enregistrements modifiés
      Call CloseBase

      End Function
  2. Slt,

    As tu testé tes requêtes sql dans l'éditeur de requête ?

    Il me semble que la syntaxe d'un DELETE en access est :

    DELETE FROM tatable WHERE nomchamp = mavariable

    Par exemple, remplace

    requeteSql = "Delete From Professeur (nom, Prenom) values "
    requeteSql = requeteSql & "('" & Nom & "" & Prenom & "');"

    par

    requeteSql = "Delete From Professeur (nom, Prenom) where "
    requeteSql = requeteSql & "nom='" & Nom & "' and prenom='" & Prenom & "';"

    J'ai pas Access sous la main. donc y peut avoir des erreurs dans le code que je t'ai donné....
    1. Bonjour
      merci de ton intervention mais ça ne fonctionne pas
  3. Bonsooir,
    Excusez-moi de m'introduire dans votre échange alors que je n'ai pas suivi depuis le début. Mais, est-ce que c'est une très bonne idée de supprimer des enregistrements sur une liste? Est-ce vraiment indispensable de procéder ainsi? Ne vaudrait-il pas 100 fois mieux avoir un champ de type Oui/Non pour permettre de sélectionner les présents lorsqu'on n'a besoin que de ceux là pour le travail que tu as à faire.
    Il faut toujours être très prudent quand on supprime des enregistrements, on ne sait jamais si on n'en aura pas besoin plus tard à un moment ou un autre. Surtout que que se casser la tête pour écrire un code VBA pour ça, on peut imaginer que tu vas t'en servir souvent.
    Bonne suite.