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

VBA Access Discussion :

procédures sur changement source d'un sous formulaire [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 69
    Points
    69
    Par défaut procédures sur changement source d'un sous formulaire
    Bonsoir a tous,

    Après plusieurs essais ratés, je me permets de revenir vers le forum pour m'aider à trouver une solution.

    J'ai un formulaire "F_principal" sur lequel j'ai un menu (groupe d'option)
    Dans ce formulaire, j'ai mis un sous-formulaire "SF_principal" dont la source (SourceObject) change en fonction du clic sur le groupe d'option.
    Groupe d'option composé comme suit:
    Accueil
    Menu1
    Menu2
    ...
    Au clic sur "Accueil",
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF_principal.SourceObject = ""
    Au clic sur "Menu1",
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF_principal.SourceObject = "Form1"
    Au clic sur "Menu2",
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.SF_principal.SourceObject = "Form2"
    Jusque là pas de soucis tout fonctionne

    L'objet de ma demande est le suivant :
    "Menu1" est cliqué =>"Form1" est affiché dans le sous formulaire "SF_principal", si je clic sur n'importe lequel des boutons du groupe d'option, je souhaiterais mettre un message MSGBOX avec "okcancel" avant de continuer ou pas la procédure.
    Le Msgbox je sais comment le faire mais je ne sais pas où le positionner

    Bien cordialement

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 579
    Points
    24 579
    Par défaut
    Bonjour,

    Il faut utiliser un if endif comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       If vbOK = MsgBox("confirmez-vous ?", vbOKCancel, "titre") Then
          Me.SF_principal.SourceObject = "valeur"
      End If
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    Bonjour et merci a toi LOUFAB de ta réponse.

    Je pense ne pas avoir été assez précis dans mon message et m'en excuse.

    Le msg box que je veux mettre est bien du style de ce que tu propose if endif mais ma question est où le mettre

    j'avais essayé de positionner sur propriété de Form1 (par exemple) sur:
    -avant MAJ
    -Sur perte FOCUS
    -Sur fermeture
    -Sur désactivé
    -Sur libération

    J'ai également essayé de positionner sur "sortie" du SF_principal

    A savoir sur quand la source de SF_principal est Form1 le if endif avec msgbox est est différent de Form2....
    La procédure doit donc être lancée avant d'enlever la source du SF_principal et non pas au chargement de la nouvel source


    Cordialement

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 007
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 007
    Points : 24 579
    Points
    24 579
    Par défaut
    Si le but est de contrôler le changement de SourceObject il faut le faire avant qu'il ne soit déclenché, donc sur clic du groupe d'option :

    Je verrais un truc dans ce style :

    Une procédure dans le formulaire principal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sub sLoadSourceObject(strSourceName as String)
     
    if Me.SF_principal.SourceObject = "" then 
       Me.SF_principal.SourceObject = strSourceName
    else
       if vbok=msgbox(....) then
         Me.SF_principal.SourceObject = strSourceName 
       end if 
    end if
     
    end sub
    un appel de ce style dans le Sur clic du GO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    select case me.groupeOption.value
    case 0 'rien
    sLoadSourceObject ""
    case 1
    sLoadSourceObject "form1"
    case 2
    sLoadSourceObject "form2"
    case 3
    ...
    end select
    J'ai un petit doute sur l'appel mais la méthode est là.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Consultant CRM

    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 69
    Points
    69
    Par défaut
    Bonjour LOUFAB

    Excuse moi du retard mais une grosse semaine de boulot.

    Merci pour tes lumières cela m'a permis de voir les choses en ton sens c'est à dire de mettre un if/end if sur le clic du groupe d'option comme suit :

    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
     
    Private Sub Menu_Princ_Click()
    If Me.SF_PRINCIPAL.SourceObject = "" Then
        Select Case Me.Menu_Princ.Value
            Case 1 'Accueil
            ...
            Case 2 'Menu1
            ...
            Case 3 'Menu2
            ...
    Else
    MsgBox "Merci de fermer le formulaire avant d'en ouvrir un autre.", vbCritical, "Message"
    DoCmd.CancelEvent
    End If
    End Sub
    J'ai également mis un bouton "FERMER" sur chacun des formulaires (Form1, Form2, ...) codé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub BTN_QUIT_Users_NEW_Click()
      If (vérification avant de fermer) Then
            MsgBox "Merci de compléter la fiche ou de la vider avant de quitter le formulaire.", vbCritical, "Création User"
            DoCmd.CancelEvent                 
      Else
      Me.Parent.Menu_Princ.Value = 0
      Me.Parent.TexteFocus.SetFocus
      Me.Parent.SF_PRINCIPAL.SourceObject = ""
      End If
    End Sub
    Merci encore a toi de m'avoir ouvert la voix

    Et encore un grand bravo au forum cela fait des années que j'y suit inscrit et toujours des gens très sympathiques pour m'aider.

    Cordialement

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

Discussions similaires

  1. [Sources] Synchroniser 2 sous-formulaires
    Par stigma dans le forum Contribuez
    Réponses: 15
    Dernier message: 26/08/2016, 15h41
  2. Réponses: 1
    Dernier message: 02/02/2008, 08h39
  3. changer l'objet source d'un sous formulaire
    Par wag71 dans le forum IHM
    Réponses: 9
    Dernier message: 29/12/2006, 14h38
  4. source d'un sous-formulaire
    Par Anaxagore dans le forum Access
    Réponses: 2
    Dernier message: 17/05/2006, 12h20
  5. SetFocus sur la valuer d'un sous-formulaire ?
    Par Raphs dans le forum IHM
    Réponses: 2
    Dernier message: 05/12/2005, 18h51

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