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

IHM Discussion :

Changer Source Objet d'un sous-formulaire [FAQ]


Sujet :

IHM

  1. #1
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 145
    Points
    145
    Par défaut Changer Source Objet d'un sous-formulaire
    Bonjour,
    Sous access 97, j'ai créé un formulaire et incorporé un sous-formulaire. J'ai placé deux boutons et j'aimerais que mon sous-formulaire change en fonction du bouton que j'enfonce. J'ai lu ici la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![FrmActivité]![SFormActivité].Form.RecordSource = "SFrmIdentification"
    Seulement, j'ai une erreur me disant qu'Access ne trouve pas la table ou requête "SFrmIdentification". Normal puisque c'est un formulaire ! Je ne veux pas changer la source de mon sous-formulaire (c'est-à-dire la requête qui lui donne naissance) en fait, mais le sous-formulaire entièrement. J'ai lu ici aussi une astuce : je superpose x sous-formulaires et j'utilise la propriété visible selon le bouton que j'enfonce. Bon admettons ...
    Existe t-il une fonction VBA pour changer l'Objet Source d'un sous-formulaire car quand je place mon "SFrmIdentification" manuellement, ça fonctionne ?
    Merci.

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    J'utilise cette syntaxe lorsque j'affecte une chaine SQL à la source de données.

    Je t'avoue que lors du changement de source d'un sous formulaire, c'était pour y affecter une chaine SQL et non le nom d'un formulaire.

    Pourrais-tu détailler le formulaire principal et son utilisation ?

  3. #3
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 145
    Points
    145
    Par défaut Oui bien sûr ...
    J'ai un formulaire dit principal nommé FrmActivité sur lequel je place deux boutons BpIdentification et BpInstruction. Quand je clique sur le premier, j'aimerais que s'ouvre le sous-formulaire SfrmIdentification. Quand je clique sur le second, j'aimerais que s'ouvre le sous-formulaire SfrmInstruction.
    J'ai donc incorporé un sous-formulaire nommé SfrmActivité dans mon formulaire principal FrmActivité. Et je me demande s'il est possible de changer la source du sous-formulaire nommé SfrmActivité en fonction du bouton appuyé afin qu'il pointe ou visualise le bon sous-formulaire. Chaque sous-formulaire possède sa table et sa requête sélection.
    En fait, cela revient à écrire dans la propriété Source Objet du sous-formulaire SfrmActivité soit "SfrmIdentification" ou "SfrmInstruction". Quand je le fais manuellement, et que je clique sur le Bp, ça fonctionne mais évidemment, c'est toujours le même sous-formulaire qui s'ouvre puisqu'il est associé au formulaire principal.
    Excusez les répétitions ...
    Ce que je demande n'est sans doute pas possible ... par VB ...

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je t'avoue (comme dit plus haut) que la méthode que tu utilises fonctionne bien quand il s'agit de modifier la source avec du SQL.

    Ensuite avec le nom du formulaire, il faudrait peut être l'ouvrir en masqué et en mode création (ou en mode création et masqué) puis modifier le nom du formulaire source, enregistrer le sous formulaire, rafraichir le formulaire principal.

    A mon avis c'est la seule façon de faire dans ce cas.

    Sinon, la méthode bête et méchante : 2 sous formulaires dans le formulaire principal chacun ayant pour source de données le formulaire en question.

    Tu cliques sur un bouton : tu affiches un sous formulaire et tu masques l'autre et vice versa.

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 155
    Points : 196
    Points
    196
    Par défaut
    Bonjour,

    Je me permets d'intervenir dans cette discussion car j'ai déjà dû traiter ce problème. Le sous-formulaire, en tant que contrôle, a une propriété SourceObject qui permet de définir le nom de l'objet formulaire qui jouera le rôle de sous-formulaire. Dans ce cas précis, on peut essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![FrmActivité]![SFormActivité].SourceObject = "SFrmIdentification"

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Citation Envoyé par Alain36 Voir le message
    Bonjour,

    Je me permets d'intervenir dans cette discussion car j'ai déjà dû traiter ce problème. Le sous-formulaire, en tant que contrôle, a une propriété SourceObject qui permet de définir le nom de l'objet formulaire qui jouera le rôle de sous-formulaire. Dans ce cas précis, on peut essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![FrmActivité]![SFormActivité].SourceObject = "SFrmIdentification"


    Bien vu. On ne parcourt jamais assez l'aide. Et pourtant : on y trouve toujours quelque chose.



    Citation Envoyé par Aide Access
    La propriété ObjetSource (SourceObject) vous permet d'identifier le formulaire ou l'état qui est la source du sous-formulaire ou sous-état dans un formulaire ou un état. Vous pouvez également utiliser cette propriété pour les cadres d'objet indépendants liés pour déterminer le nom et le chemin d'accès complets du fichier qui contient les données liées au cadre d'objet.

  7. #7
    Membre habitué
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 145
    Points
    145
    Par défaut Messieurs ...
    ... vous êtes les meilleurs ...
    Merci Alain ça fonctionne parfaitement.
    Avec un peu plus de réflexion j'aurais pu trouver seul.
    Que le code soit avec vous.
    A bientôt !

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

Discussions similaires

  1. [AC-2010] Changer de RecordSource d'un sous-formulaire
    Par Rifton007 dans le forum IHM
    Réponses: 11
    Dernier message: 07/03/2013, 08h56
  2. [AC-2003] atteindre un objet dans un sous formulaire
    Par chuspyto dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/08/2012, 21h57
  3. [AC-2003] Changer le RecordSource d'un sous formulaire
    Par Goupo dans le forum IHM
    Réponses: 2
    Dernier message: 07/04/2010, 10h59
  4. Créer 1 ref à 1 objet d'1 sous-formulaire
    Par alonsyl dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/09/2007, 20h02
  5. Acces aux objets dans un sous-formulaire
    Par Destiny dans le forum Access
    Réponses: 3
    Dernier message: 13/02/2007, 08h28

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