IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Actualiser un sous formulaire d'un autre sous formulaire [AC-2013]


Sujet :

Access

  1. #1
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut Actualiser un sous formulaire d'un autre sous formulaire
    Salut membres du forum !
    J'aimerais pour pouvoir actualiser le sous formulaire d'un autre sous formulaire grâce à la procédure obtenu d'un membre du forum Developpez.net.
    'Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    'tee_grandbois:
    'pour éviter toute confusion, dans le formulaire Eleve_ChargeDuParentDialogue, j'ai renommé la procédure sMajForm en sMajSousForm.
    'J'ai corrigé le code pour qu'il puisse traiter les données du sous-formulaire, il suffit de le coller directement dans le formulaire Eleve_ChargeDuParentDialogue:
    Code:
    Sub sMajSousForm()
    Dim lngClé As Long
    Dim lngEnrActif As Long
    Dim rs As DAO.Recordset
     
    On Error GoTo GestErr
     
    'Désactive le rafraîchissement de l'écran
    Echo False
     
    'S'il n'y a pas d'enregistrement, on quitte la procédure
    If Forms("PARENT").ELEVE_ChargeDuParent.Form.RecordsetClone.RecordCount = 0 Then Exit Sub
    lngClé = Forms("PARENT").ELEVE_ChargeDuParent.Form.Controls("mleeleve")
    lngEnrActif = Forms("PARENT").ELEVE_ChargeDuParent.Form.CurrentRecord
     
    Forms("PARENT").ELEVE_ChargeDuParent.Form.Requery
    Set rs = Forms("PARENT").ELEVE_ChargeDuParent.Form.RecordsetClone
    With rs
     'S'il n'y a plus d'enregistrement, on quitte la procédure
      If rs.RecordCount = 0 Then Exit Sub
      .FindFirst "mleeleve=" & lngClé
      Select Case .NoMatch
        Case True 'Si l'enregistrement qui était actif a disparu...
          DoCmd.GoToRecord , , acGoTo, lngEnrActif
        Case False
          Forms("PARENT").ELEVE_ChargeDuParent.Form.Bookmark = .Bookmark
      End Select
    End With
    rs.Close
    Set rs = Nothing
     
    'Active le rafraîchissement de l'écran
    Echo True
     
    Exit Sub
    GestErr:
    Select Case Err
      Case 2105 'Si le numéro d'enregistrement n'est plus valide...
          'C'est qu'il y a moins d'enregistrements depuis le Requery,
          ' donc on active le dernier enregistrement
          DoCmd.GoToRecord , , acLast
      Case Else
        MsgBox Err.Description, Err.Number
    End Select
    rs.Close
    Set rs = Nothing
     
    'Active le rafraîchissement de l'écran
    Echo True
     
    End Sub
    .
    Cependant, j'ai essayé d'adapter cette procédure à l'actualisation du sous formulaire d'un sous formulaire d'un formulaire principal. Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub sMajSousDeSousForm()
    Dim lngClé As Long
    Dim lngEnrActif As Long
    Dim rs As DAO.Recordset
     
    On Error GoTo GestErr
     
    'Désactive le rafraîchissement de l'écran
    Echo False
     
    'S'il n'y a pas d'enregistrement, on quitte la procédure
    If Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.RecordsetClone.RecordCount = 0 Then Exit Sub
    lngClé = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Controls("NUM_AUTO_Commerce")
    lngEnrActif = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.CurrentRecord
     
    Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Requery
    Set rs = Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.RecordsetClone
    With rs
     'S'il n'y a plus d'enregistrement, on quitte la procédure
      If rs.RecordCount = 0 Then Exit Sub
      .FindFirst "NUM_AUTO_Commerce=" & lngClé
      Select Case .NoMatch
        Case True 'Si l'enregistrement qui était actif a disparu...
          DoCmd.GoToRecord , , acGoTo, lngEnrActif
        Case False
          Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Bookmark = .Bookmark
      End Select
    End With
    rs.Close
    Set rs = Nothing
     
    'Active le rafraîchissement de l'écran
    Echo True
     
    Exit Sub
    GestErr:
    Select Case Err
      Case 2105 'Si le numéro d'enregistrement n'est plus valide...
          'C'est qu'il y a moins d'enregistrements depuis le Requery,
          ' donc on active le dernier enregistrement
          DoCmd.GoToRecord , , acLast
      Case Else
        MsgBox Err.Description, Err.Number
    End Select
    rs.Close
    Set rs = Nothing
     
    'Active le rafraîchissement de l'écran
    Echo True
     
    End Sub
    .

    Voici le message d'erreur qui en résulte:
    propriété Ou Méthode Non Gérée Par Cet Objet
    Nom : CapturepropriétéOuMethodeNonGereeParCetObjet.PNG
Affichages : 506
Taille : 100,6 Ko
    et
    Variable objet ou variable de bloc with non définie
    Nom : CaptureVariable objet ou variable de bloc with non définie.PNG
Affichages : 370
Taille : 62,8 Ko

    Nom : CaptureBD.PNG
Affichages : 409
Taille : 122,0 Ko
    Cordialement.

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 760
    Points : 14 795
    Points
    14 795
    Par défaut
    bonsoir,
    je pense qu'il manque un .Form entre les 2 sous-formulaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("Entete_AUTRES_PROJETS_DIVERS").Sous_Entete_Autres_Projets_Divers_SF.Form.OUMARCOMMERCE_ARTICLES_ACHETES_EN_GROS_SF.Form.Requery

  3. #3
    Membre confirmé Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 125
    Points : 495
    Points
    495
    Par défaut Remerciement
    Bonjour membres du forum !
    Merci merci merci, mon problème est résolu.
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Macro "Actualiser" à partir d'un sous-formulaire sur un autre sous-formulaire
    Par PetitChris dans le forum VBA Access
    Réponses: 16
    Dernier message: 20/09/2015, 20h30
  2. Réponses: 0
    Dernier message: 11/04/2008, 10h33
  3. Réponses: 5
    Dernier message: 19/11/2007, 14h27
  4. Réponses: 4
    Dernier message: 21/09/2007, 13h23
  5. Réponses: 3
    Dernier message: 26/08/2006, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo