Problème macro access

Bonjour,

J'ai créé un formulaire sur access 2007 basé sur une table à trois colonnes. Il s'agit d'un formulaire en mode "continue" Je souhaiterais par une macro, affecter une valeur à un champs mais que cette valeur soit dépendante de la valeur d'un autre champs (en introduisant une condition dans la macro) Cà je maitrise

Mais ma question est : comment faire pour que la mise à jour de la valeur se fasse sur TOUTES les lignes du formulaire et non sur la première seulement ?

Merci pour vos réponses

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    en corrigeant quelques lignes
    Private Sub Commande32_Click()
    On Error GoTo Err_Commande32_Click

    Dim dbs As DAO.Database
    dim rst as DAO.Recordset
    Set dbs = CurrentDb
    Set rst= dbs.OpenRecordset("nom_tble du sous-formulaire fils", dbOpendynaset)
    rst.MoveFirst
    While Not rst.EOF
    If rst![nom_champ en commun_table fils] = Me.nom_champ_communpère Then
    Validation = True
    Else: Validation = False
    End If
    rst.MoveNext
    wend
    End Sub
    j'espère vous avoir aider.
    Bonne chance.
    Merci.
    1. re

      alors apres le end if il manque le le wend

      il manque les " " entre le nom de ta requete "definircontacts",dbopendynaset

      et aussi vu que c une requete que tu utilise et non une table le type est dynamique dc : dbopendynaset comme je te l ai indiqué ci desssus

      essai en modifiat ca deja si cela ne vas tjs pas on essaira en modifiant tes " if "
      1. Merci pour ta réponse. Je suis sur que la solution est là

        J'ai adapté de la façon suivante :

        Private Sub Commande32_Click()
        On Error GoTo Err_Commande32_Click

        Dim dbs As Database
        Dim N°adresse As Recordset
        Set dbs = CurrentDb
        Set N°adresse = dbs.OpenRecordset(definircontacts, dbOpenTable)

        Recordset.MoveFirst
        While Not Recordset.EOF
        Recordset.MoveNext
        If Me!N°adresse = Me!rappeladresse Then

        Validation = True
        Else: Validation = False

        End If

        End Sub

        Mais çà ne marche pas. Je dois faire des erreurs dans la rédaction mais je manipule très mal le VBA

        en synthèse, dans la requête "définir contact" j'ai un champs "N°adresse" qui doit être identique à un champs texte "rappeladresse" du formulaire pour que la case à cocher "validation" soit définie comme vraie.

        Peux tu me dépanner sur la rédaction du code ? je pense que l'erreur se situe dans le début du code
        1. bonjour

          Quelque chose comm ca pourrais surement t aider:*

          tu creer un bouton sur ton formulaire et derriere tu met:

          Dim dbs As Database
          Dim ... As Recordset 'remplace les ... par le nom du champ que tu veu verifier
          Set dbs = CurrentDb
          Set ...= dbs.OpenRecordset("ici le nom de ta table", dbOpenTable)

          Recordset.MoveFirst
          While Not Recordset.EOF
          Recordset.MoveNext
          If Me.... = "ta condition que tu veux verifier" Then la les ... correspondent a ce du haut

          ta case a cocher = true

          Else: ta case a cocher = false

          End If

          Wend

          je pense que c ce que tu recherche si besoin hesite pas
          1. Salut,

            Sans rentrer trop dans les détails, il s'agit d'un sous formulaire dans lequel j'ai une case à cocher de type oui/non. Une requête ne peut pas fonctionner car je dois pouvoir la décocher.
            Disons que suivant la valeur d'une case dans le formulaire père, une série de case doit être cochée en oui (ou en non) dans le sous formulaire automatiquement. MAIS on doit pouvoir modifier sa valeur

            J'éspère que c'est compréhensible
            1. bonjour que ve tu faire exactement on pourra transformer ta macro en code vba