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. 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.
    1. 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
    2. 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