Probleme de mise à jour de donnees

Bonjour,
Je suis en train de programmer (ACCESS 2007) un mini logiciel pour mon école, et je suis bloqué sur la commande de mise à jour,

Mon problème avec le code actuel est que , il ne s’exécute que si je passe repasse en mode création, et puis je revient en mode formulaire, et c'est seulement après ces gymnastiqueS que cela fonctionne
Question:
Je voudrais qu'on m'aide, qu'est ce qui manque sur le code ci-dessous
Private Sub Commande102_Click()
  Dim db As Database
  Dim rsel As Recordset
  Set db = CurrentDb
  If test_code_absence = 0 Then
    Set rsel = CurrentDb.OpenRecordset(" SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs ")
        
    rsel.MoveFirst
    Do While Not rsel.EOF
        If rsel!id_abs = id_abs.Value Then
            With rsel
               rsel.Edit
         
               rsel![annee_scol] = annee_scol.Value
               rsel![situation_abs] = situation_abs.Value
               rsel![niveau] = niveau.Value
               rsel![effectif_niv] = effectif_niv.Value
               rsel![nb_abs] = nb_abs.Value
               rsel.Update
           
              MsgBox "Modification effectuée"
              DoCmd.Close
            
           End With
             Exit Do
        End If
        rsel.MoveNext
    Loop
  End If
End Sub


EDIT : Ajout des BALISES DE CODE

1 réponse

  1. Contributeur Ambassadeur
    bonjour, il manque des commentaires. tu ne donnes aucune explication de ce que tu souhaites que ton code fasse.
    tu écris "il ne s’exécute que si...". comment le sais-tu?
    A tout hasard:
    - ajoute "option explicit" en début de module
    - supprime le "With"
    - pourquoi "DoCmd.Close" ?
    0
    1. Bonjour yg_be

      Merci pour ta réponse.

      Ce que je veux que mon code fasse est la mise à jour des données qui sont déjà dans une table nommée t_absence, quand on clique sur un bouton modifier
      J'ai exécuté ce code, et ce que je ne comprends pas est : que le programme ne n’exécute pas tout d'abord, puis dans la foulée je revient en mode création, puis je revient en mode formulaire(pour le même formulaire) et re-clique sur le bouton modifier. Et, là le programme s’exécute
      Donc impossible de faire la mise à jour de donnée normalement.

      C'est cela mon problème

      J'ai ajouté " option explicit" au tout début du module, puis j'ai enlevé le With mais cela ne marche pas

      Pq Docmd.close est une erreur de ma part, il manque un docmd.OpenForm

      Merci
      0
    2. Contributeur Ambassadeur
      @solomariustu écris "il ne s’exécute que si...". comment le sais-tu? as-tu mis un point d’arrêt sur la premiere instruction?
      il manque toujours des commentaires.
      qu'essaies-tu de faire avec
      SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs
      ?
      ne serait-il pas plus logique de faire:
      " SELECT * FROM t_absence WHERE id_abs = " &  id_abs.Value
      ?
      0
    3. Bonjour yg_be
      Encore merci pour ta réponse

      J'ai créé plusieurs formulaire: un formulaire d'insertion, consultation et suppression, modification

      Qu'essai-je de faire avec : SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs

      -Dans ma formulaire "modification" id_abs qui est la clé primaire_auto_increment, avec une propriété "caché"
      -Je veux sélectionner et modifier les données qui correspondent au id_abs

      Merci
      0