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 :

"nettoyer" le critère d'un bouton Ouvrir Form sur Modif


Sujet :

IHM

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut "nettoyer" le critère d'un bouton Ouvrir Form sur Modif
    Bonjour,

    J'ai un formulaire de recherche multi-critère qui fonctionne parfaitement bien au niveau de la recherche.
    C'est à dire que selon selon les différents critères il affiche bien toutes les plantes correspondant dans ma liste lstResult.

    Mon problème se situe lors de l'utilisation du bouton Ouvrir la fiche complete de la plante!
    Si lors de la première utilisation du bouton aucune plante n'est séléctionnée, j'ai une MsgBox qui s'affiche et demande à l'utilisateur de selectionner une plante.

    Par contre si il consulte la plante. retourne au formulaire de recherche, change les critères, la nouvelle liste de plante s'affiche mais si il appuye sur ouvrir la fiche sans selectionner de plante dans la nouvelle liste. Le bouton ouvre la dernière fiche consultée.

    Comment puis-je lui dire de "nettoyer" mon bouton ouvrir a chaque modification faite sur le formulaire de recherche.

    Oulà, sorry, je me suis laissée aller!!! je vous ai taper un vrai roman. lol. J'espère que ca sera clair

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Peut-on connaitre le code qui ouvre le second formulaire, et d'où il tire l'information.

    Starec

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    bien sure.

    C'est un simple bouton docmd.openform et son critère est la clé primaire contenue dans la zone de liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub btnOuvrir_Click()
    On Error GoTo ERREUR
    DoCmd.OpenForm "IntroPlante", acNormal, , "[Identité.ID]=" & Me!lstResult, acFormReadOnly
    Exit_btnOuv_Click:
    Exit Sub
    ERREUR:
    MsgBox "Sélectionnez un nom dans la liste", vbOKOnly
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Pour pallier ce soucis je te propose de mettre une petite solution :

    1 - Création d'une variable
    2 - Sur le click de ta liste tu remplis cette variable et tu t'en sers dans ta clause Where de ton DoCmd.OpenForm
    3 - Lorsque tu fais une nouvelle recherche tu mets cette variable à zéro
    4 - Cette variable est à déclarer dans l'entête de module du formulaire.

    Il y'a peut-être plus simple, mais c'est Vendredi, la fatigue.

    Starec

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Merci Starec,

    Pourrais tu me donner un exemple car malheureusement ayant appris le tout sur le tas je ne connais pas tout les termes utiliser ce qui rend l'explication un peu floue

    d'avance un grand merci

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    Quelqu'un pourrait-il me renseigner un tuto sur comment déclarer une variable globale?

    je sais utiliser les variable locales mais je n'ai encore jamais eu à utiliser une globale et j'aimerais un exemple.

    Merci.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Une peu de lecture http://mhubiche.developpez.com/Access/variables/

    Starec

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    bon alors, je m'y suis prise un peu autrement car pas reussi a faire ce que je voulais avec la variable.
    Comme je suis pas une pro de VBA et qu'il me manque très certainement certaines parties importantes a ma formation j'y suis pas arrivée.

    Par contre en continuant le reste de mon formulaire j'en arrive a ceci:

    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
    Private Sub RefreshList()
    ' Choisis le type de méthode de refraichissement de ma liste de résultats
    If Me.chkAUtil = -1 Then
        If AUtil3.Visible = True Then
        AUtil3_AfterUpdate
        Else
            If AUtil2.Visible = True Then
            AUtil2_AfterUpdate
            Else
            AUtil1_AfterUpdate
            End If
        End If
    Else
    RefreshQuery
    End If
    'Après rafraichissement selectionner la première valeur de ma liste de resultat
    Me.lstTrouv.ListIndex (0)
    End Sub
    Bon alors par contre ca tourne pas. ca me met un message d'erreur.
    "Utilisation incorrect de la propriété"

  9. #9
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Bonjour,

    Sans préjuger de ce qui t'a déjà été répondu je te donne ma méthode: qui ouvre la fiche sur un double clic dans la liste. La 1ère colonne (0) est le champ clé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub lstResults_DblClick(Cancel As Integer)
    On Error GoTo Err_lstResults_DblClick
                    DoCmd.OpenForm "frmDocument", acNormal, , "[Docnum] = " & Me.lstResults.Column(0)
        Exit_lstResults_DblClick:
        Exit Sub
    Err_lstResults_DblClick:
        MsgBox "Erreur frmRecherche_lstResults_DblClick n°: " & Err.Number & vbCrLf & Err.Description, , "xxx"
        Resume Exit_lstResults_DblClick
    End Sub

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Bonjour takamaka,

    Mon code permet déjà le double clic et effectivement en cas de double clic le problème ne se pose pas.
    Mais en cas d'utilisation du bouton Ouvrir si on a pas pris la peine de reselectionner une plante dans la liste entre les deux manipulations il rouvre la dernière selectionner au lieu de m'afficher la msgbox qu'aucune plantes n'a été choisie.

    Mon but etant pas specialement que cette boite msgbox s'affiche mais surtout qu'il prenne bien une des plantes presente dans la liste mise a jours.
    Puisqu'avec les nouveaux critères la dernière plante selectionnée (celle qu'il ouvre actuellement) n'en fait peut etre plus partie.

  11. #11
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Comment est-ce que tu sélectionnes LA plante que tu va "ouvrir"?

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Hé bien justement c'est la le problème.

    J'aimerais que pas defaut ca me selectionne la première de la liste après avoir rafraichis cette dernière au cas où l'utilisateur oublie d'en choisir une et appuie sur le bouton ouvrir.

  13. #13
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Excuses-moi mais... qu'est ce que t'apporte le bouton ouvrir? Quoi de plus que le double clic?

  14. #14
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    J'utilise une requête, enregistrée à chaque RefreshQuery pour faire un certain nombre d'actions sur le résultat de la recherche.
    Tu peux faire suivant ce principe et chercher le premier dans la requête pour l'ouvrir.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL = SQL & "ORDER BY " & TriPar & SensTri & ";"
    Debug.Print "SQL " & SQL
    'Enregistre la requête :
    CurrentDB.QueryDefs("qryRechMulti").SQL = SQL
    Exemple d'un bouton qui m'ouvre le formulaire et ma passé toutes les fiches sélectionnées:
    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 cmdOuvrirFichesSelectionnees_Click()
    On Error GoTo Err_cmdOuvrirFichesSelectionnees_Click
        Dim stDocName As String, stSource As String
        Dim stLinkCriteria As String
     
        stDocName = "frmDocument"
        stSource = "qryRechMulti"
        DoCmd.OpenForm stDocName, , stSource, stLinkCriteria
    Exit_cmdOuvrirFichesSelectionnees_Click:
        Exit Sub
    Err_cmdOuvrirFichesSelectionnees_Click:
        MsgBox "Erreur frmRecherche_cmdOuvrirFichesSelectionnees_Click n°: " & Err.Number & vbCrLf & Err.Description, , "ANAsoft Documage"
        Resume Exit_cmdOuvrirFichesSelectionnees_Click
     
    End Sub
    C'est tout simple et ouvre plein de perspectives...

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Merci takamaka,

    Je crois qu'on se comprend pas bien.

    Je rééxplique:
    J'ai un formulaire avec déjà un RefreshQuery (en fait 4 qui s'emboitent et gérés par mon RefreshList qui reconnais a partir de où il doit reprendre mes requete emboitées)

    Mon bouton ouvrir ne me pose aucun problème de code il ouvre parfaitement les enregistrements selectionnés. Et c'est le même code qui me sert pour le double clic dans la liste proposé.

    Mon problème se situe si:
    1 - mon utilisateur fait sa recherche, selectionne une plante, clic sur ouvrir, consulte sa plante.
    2- referme la fiche de consultation et retourne sur le formulaire de recherche.
    3- change ses critères (donc nouvelle liste de plantes et pas celle selectionné precedemment)
    4- NE selectionne PAS de plante dans la liste
    5- clic sur ouvrir

    le problème c'est que au point 5 mon bouton ouvre la plante selectionné au point 1 et risque donc de de mettre dans l'erreur l'utilisateur.
    Donc pour y remedier je souhaiterais que a chaque modification des critères ma lstTrouv selectionne le premier de la liste ou nettois mon critère OpenForm.
    Comme ca pas d'erreur possible si l'utilisateur aime la fiche de la plante ben il peut l'utiliser puisqu'elle correspond BIEN aux critères choisis.

    Voilà, j'espère que ca sera plus clair.

  16. #16
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Si je peux me permettre...

    J'en reviens à l'idée de Starec.

    Dans l'entête de n'importe quel module standard, on place une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option Compare Database
    Option Explicit
     
    Public SelectionListe As Boolean
    Puis à à l'ouverture du formulaire de recherche, sur Form_Load, on l'initialise à faux :

    Ensuite, sur la propriété après mise à jour de la liste (indiquant qu'un élément est sélectionné), on passe la variable à vrai.

    Sur le code du bouton, on teste la variable.

    Si la valeur est à False, on affiche le message demandant de faire une sélection, autrement on affiche le formulaire.

    A la fermeture de celui-ci, on repasse la variable à False.

    C'est peut-être une idée.

    Domi2

  17. #17
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    J'avais bien compris ton problème.
    Je te donne des pistes...que je suis, et qui donc me donnent le résultat attendu en modifiant la requête enregistrée dont je t'ai déjà parlé comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SQL = SQL & "ORDER BY " & TriPar & SensTri & ";"
    Debug.Print "SQL " & SQL
    'Enregistre la requête pour un état (ou autre):
    Dim SQL2 As String
    SQL2 = Replace(SQL, "SELECT", "SELECT TOP 1")
    Debug.Print "SQL2 " & SQL2
    CurrentDB.QueryDefs("qryRechMulti").SQL = SQL2

  18. #18
    Membre averti
    Directeur technique
    Inscrit en
    Novembre 2006
    Messages
    584
    Détails du profil
    Informations personnelles :
    Âge : 61

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 584
    Points : 403
    Points
    403
    Par défaut
    Pour finir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub btnOuvrir_Click()
    On Error GoTo ERREUR
    DoCmd.OpenForm "frmDocument", acNormal, , "[Docnum]=" & Me!lstResults.Column(0), acFormReadOnly
    Exit_btnOuv_Click:
    Exit Sub
    ERREUR:
    'MsgBox "Sélectionnez un nom dans la liste", vbOKOnly
    Dim stDocName As String, stSource As String
        Dim stLinkCriteria As String
     
        stDocName = "frmDocument"
        stSource = "qryRechMulti"
        DoCmd.OpenForm stDocName, , stSource, stLinkCriteria
    End Sub

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    Hello Domi2,

    Je vais tester tout ca il y a juste la fin qui marchera pas car c'est le même formulaire qui me sert à l'introduction des plantes et à la consultation de la fiche.
    Donc pas toujours le même formulaire de recherche qui est ouvert.

    Mais bon je vais regarder comment arranger ca si ca marche déjà.

  20. #20
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    1 - mon utilisateur fait sa recherche, selectionne une plante, clic sur ouvrir, consulte sa plante.
    2- referme la fiche de consultation et retourne sur le formulaire de recherche.
    Au point 2, tu indiques qu'il referme la fiche de consultation.

    C'est à ce moment-là que tu dois réinitialiser ta variable...

    Ou alors quelque chose m'échappe...

    Domi2

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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