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 :

Gérer le focus des fenetres [Toutes versions]


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut Gérer le focus des fenetres
    Bonjour,

    J'ai une formulaire me permettant de sélectionner une requête et, à l'aide d'un bouton, je lance la requête sélectionnée.
    Mon soucis est que le résultat de la requête (Table, Tableau croisé ou graphique) apparait derrière mon formulaire (qui est pas mal grand).

    Je souhaiterais que ce résultat soit affiché en premier plan avec un focus dessus (qu'on ne puisse pas toucher au formulaire tant que la fenêtre n'est pas fermée).

    Voici le code qui est lancé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub List_Requetes_DblClick(Cancel As Integer)
    ' Au double-clic, on lance la requête sous forme de table
    DoCmd.OpenQuery Forms![Accueil].List_Requetes.Column(0), acViewNormal
    End Sub
    Merci de votre aide !

  2. #2
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    tu n'a qu'à mettre la propriété modale de ton formulaire de résultat sur "oui"

  3. #3
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Le soucis doit être que le résultat n'est pas un formulaire.

    Pourriez vous m'indiquer le code vba pour faire en sorte que le résultat soit dans un formulaire ?

    Merci !

  4. #4
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    Tu peut créer un nouveau formulaire en mode feuille de donnée et à son ouverture sur l’évènement form_load tu peut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Form_Open()
    Dim strNewRecord As String
     
    strNewRecord = Forms![Accueil].List_Requetes.Column(0)
    Me.RecordSource = strNewRecord
    End Sub

  5. #5
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Ok. Merci pour l'information.
    Par contre, je ne peux pas effectuer mes sorties sous forme de formulaire de données.
    En effet, lors de la création du formulaire, il demande des noms de variable à afficher et pour toutes les requêtes que je lance, il me garde ces mêmes noms de variables (alors que ces variables ne sont jamais les mêmes).

    Y'a t il moyen de générer dynamiquement les variables à afficher (les variables de la requete) ?

    Si non, la fenetre générée par ma commande OpenQuery, ne peux t on pas lui associer des propriétés ? Des codes évènementiels ?

  6. #6
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    Bonjour ! Pour la fenêtre native de Access je ne croit pas qu'il soit possible de lui attitrer des évènements !!

    Ensuite, je peut t'assurer que c'est possible de créer un formulaire comme je te l'ai expliqué ... si tu a des problèmes comme tu le cite !
    En effet, lors de la création du formulaire, il demande des noms de variable à afficher et pour toutes les requêtes que je lance, il me garde ces mêmes noms de variables
    Normalement ca se produit parce qu'il y a une erreur de conception !!

    Si tu n'a pas encore essayé le bout de code que je t'ai donnée alors essai le.

  7. #7
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Dommage ...

    J'ai de nouveau testé le code que tu m'as fourni. Le seul hic qu'il me reste, c'est que les variables qui sont affichées au lancement de ce code sont celles que j'ai utilisée lors de l'initialisation du formulaire.

    Car j'imagine qu'il faut tout d'abord créer le formulaire qui va afficher les résultats (et c'est lors de cette création qu'il me demande les variables à afficher) et ensuite faire appel à lui.

    A moins que la version soit en cause (2003)

  8. #8
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    bonjour !

    je vais essayer de t'aider de mon mieux donc reprenons du début.

    1. il te faut créer un formulaire vierge
    2. Ensuite dans le mode création tu va dans l'onglet Format, qui se trouve dans les propriétés du formulaire.
    3. u clique sur les trois petits point à coté de "Affichage par défault" tu choisi feuille de données.
    4. tu sauvegarde ton formulaire avec le nom que tu désire par exemple "Form_resultat"


    Dans ton premier formulaire qui possède ta liste de choix tu écrit dans la procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub List_Requetes_DblClick(Cancel As Integer)
    dim requete as string 
    requete = me.List_Requetes.Column(0)
    ' Au double-clic, on lance la requête sous forme de table
    DoCmd.openform "Form_resulat" , , , , , , requete
    End Sub
    Ensuite dans ton nouveau formulaire tu va dans VB avec Alt F11 ou tu clique dans les propriétés de ton formulaire sur "Sur Chargement" qui va t'ouvrir VB automatiquement.

    Donc là tu y inscrit ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Form_Open()
    Me.RecordSource = me.openargs
    End Sub
    ensuite sur fermeture du formulaire résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Form_Close()
    me.RecordSource = ""
    End Sub
    Ce qui permettra d'effacer les données pour la prochaine ré-ouverture.

  9. #9
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    Bonjour !

    J'ai suivi avec attention tes instructions. Ce système semble bien prendre ma requête (je le vois au nombre d'enregistrements en bas de la fenêtre), mais il n'a aucune colonne a montrer me semble t il. Tous les résultats sont vides (Aucune colonne, mais le bon nombre de lignes)

    Sais tu comment indiquer au formulaire Résultat qu'il doit lire les variables à partir de la requête (toutes les colonnes de toutes les requêtes sont à présenter).

    Mais, cela ne me règle pas le problème de focus des fenêtres (point initial).

    Merci beaucoup de ton aide

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    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 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonsoir,
    en principe la fenêtre de résultat d'une requête s'affiche au premier plan par défaut (en tout cas jusqu'à la version 2003).
    Si ce n'est pas le cas, c'est que ton formulaire appelant a sa propriété "Fenêtre indépendante" à Oui, mets la à Non et cela devrait fonctionner (et donc, pas besoin d'un autre formulaire pour afficher les résultats).

  11. #11
    Membre averti Avatar de robyseb
    Homme Profil pro
    Programmeur-Analyste
    Inscrit en
    Juillet 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur-Analyste
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2011
    Messages : 305
    Points : 423
    Points
    423
    Par défaut
    Bonsoir !

    A tu bien indiquer le mode Feuille de données ? Ce mode créer exactement la même fenêtre que celle que tu utilisait avec ton autre commande, donc elle se formate selon les données qu'il y a à afficher !

    ensuite pour rendre ton nouveau formulaire au premier plan il ne te reste qu'à aller dans les propriétés "Autres" du formulaire et tu met la propriété Indépendante à Oui, et Modal à oui, le mode modal indique à Access que la fenêtre doit absolument être au premier plan puisque celle-ci doit être fermé afin de continuer ailleurs.

    peut tu poster un exemple de une de tes requêtes pour comprendre pourquoi elle n'affiche rien ?

  12. #12
    Membre régulier Avatar de Dr Byby'San
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2009
    Messages : 146
    Points : 115
    Points
    115
    Par défaut
    C'est exactement ce qu'il me fallait. (Propriété Fenêtre indépendante du formulaire). Du coup, mes résultats s'affichent maintenant au premier plan.

    Oui Oui. J'ai bien indiqué le mode feuille de données comme tu me l'as indiqué.
    Je pense que la différence de comportement vient du fait qu'avant j'utilisais une Requete avec une "OpenQuery" (et cela me mettait bien les résultats) et que là ont fait appel à un formulaire qui doit être formaté (lui indiquer quels champs afficher).

    Mes requetes sont de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Nom, Prénom, Adresse From Patients
    Merci à vous deux !

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

Discussions similaires

  1. Gérer le focus sur des TextBox, en événementiel
    Par laterite dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/01/2006, 17h10
  2. Réponses: 2
    Dernier message: 13/10/2004, 15h32
  3. [C#] Probleme de dimensionnement des fenetres en MDI
    Par stephdiplo150 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 28/05/2004, 19h05
  4. [SWT] Comment faire des fenetres internes ??????
    Par sebounator dans le forum SWT/JFace
    Réponses: 5
    Dernier message: 22/04/2004, 01h12
  5. [VB6] Listage des fenêtres windows
    Par gg78 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 27/05/2003, 11h36

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