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 :

[Formulaire]filtre sur 4 niveaux de sous-formulaires


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut [Formulaire]filtre sur 4 niveaux de sous-formulaires
    bonjour,
    Je dispose de 4 formulaires imbriqués les uns dans les autres :
    - formulaire principal : FrmPrincipal2
    - sous formulaire : frm Personnel2
    - sous-sous formulaire : frmFormation2
    - sous-sous-sous formulaire : frmRecyclage

    Dans mon formulaire principal, j'ai juste placé en haut des listes déroulantes indépendantes qui servent pour choisir des critères et alimentent un bouton macro "Rechercher" qui filtre les sous-formulaires (code ci dessous).

    Quand je me sers de critères (de champs) étant sur le formulaire frmPersonnel2, pas de soucis. Par contre, quand le critère porte sur un champ du sous-sous formulaire frmFormation2, ça ne marche plus.

    Voilà le code, je pense que c'est en bas, j'ai mis deux With pour qu'il filtre sur deux formulaires. Je crois pas que cela se fasse comme cela.

    Code vba : 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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Private Sub Commande16_Click()
    Dim strFiltre As String
    Dim suivi As Integer
     
     
    On Error Resume Next
    strFiltre = ""
     
     
    'Filtre sur les noms
    If Me.FiltreParNom <> "" Then
        strFiltre = "([NomPrenom]='" & Me.FiltreParNom & "')"
        suivi = 1
    End If
     
    'Filtre sur les dates
    'Date mini
     
    If Me.FiltreParDateMin <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)"
        Else
            strFiltre = "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)"
        End If
        suivi = 1
    End If
     
     
    'Filtre sur les dates
    'Date maxi
    If Me.FiltreParDateMax <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)"
            Else: strFiltre = "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)"
        End If
        suivi = 1
    End If
     
    'Filtre sur le service
    If Me.FiltreParService <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([Service]='" & Me.FiltreParService & "')"
            Else: strFiltre = "([Service]='" & Me.FiltreParService & "')"
        End If
        suivi = 1
    End If
     
     
    'Filtre sur le type de formation
    If Me.FiltreParFormation <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "(Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form![TypeFormation]='" & Me.FiltreParFormation & "')"
            Else: strFiltre = "(Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form![TypeFormation]='" & Me.FiltreParFormation & "')"
        End If
        suivi = 1
    End If
     
    'Filtre sur le type d'organisme
    If Me.FiltreParOrganisme <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([Organisme]='" & Me.FiltreParOrganisme & "')"
            Else: strFiltre = "([Organisme]='" & Me.FiltreParOrganisme & "')"
        End If
        suivi = 1
    End If
     
     
    'Filtrer le sous-formulaire
    With Me.[frm personnel2].Form
        .Filter = strFiltre
        .FilterOn = True
        End With   
    'Filtrer le sous-sous formulaire
     
    With Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form
        .Filter = strFiltre
        .FilterOn = True
        End With
     
    End Sub

    Merci de m'aider.

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 219
    Points : 227
    Points
    227
    Par défaut L'utilisation de Me
    C'est ce code qui te cause problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form
        .Filter = strFiltre
        .FilterOn = True
    End With
    Si je serais toi, je ferais le deuxième filtre dans frmFormation2...

    Tiens moi au courant.
    Alex

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Oui, je suis d'accord mais comment le faire pour que cela reste ergonomique ? Facile pour l'utilisateur ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Mon explication n'est pas claire ou vous n'avez pas de solution ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Je vais essayer de réexpliquer. J'ai joint une copie d'écran sur un document word.

    Tout en haut, il y a des listes déroulantes (sur le formulaire principal indépendant de tout table et requête) qui me permettent de choisir :

    - le nom de la personne (ce champ se trouve sur le fromulaire frm personnel2).
    - le service (ce champ se trouve sur ce même formulaire).
    => Pour ces deux pas de difficultés. Mon code (au dessus) fonctionne.

    On continue ...

    - le type de formation et l'organisme (ces champs se trouvent sur le sous-formulaire frmFormation2).
    => Là je n'arrive pas à lui dire de filtrer par rapport à ces critères.

    Enfin, le plus dur ...

    - la date de début et la date de fin (ces champs se trouvent sur le dernier formulaire frmRecyclage).

    Et ensuite de filtrer mes formulaires par rapport aux critères choisis dans les listes déroulantes. Ce filtre est déclenché par le bouton "rechercher" du formulaire principal.

    -------------------------------------------------

    Pour essayer de mieux comprendre la difficulté, je dispose de 3 tables :

    PERSONNEL (Numéro, NomPrenom, Service)
    FORMATION (NumeroFormation, TypeFormation, Organisme, Observations, ...)
    PERSONNEL FORME(N°Recyclage, Numéro, NumeroFormation, Date de formation, ...) C'est la table jointure : une personne peut faire plusieurs fois la même formation et une même formation peut être faite par plusieurs personnes. C'est la date qui va différencier tout ça.

    voici sur quoi se base chaque formulaire :

    - frmPrincipal2 : indépendant (sert que pour les filtres) (couleur gris sur photo)
    - frm personnel2 : basé sur la table personnel (couleur jaune sur photo)
    - frmFormation2 : basé sur une requête qui regroupe les 3 tables. (couleur jaune sur photo : attention, il est à l'intérieur de frm personnel2)
    - frmRecyclage : basé sur cette même requête (couleur bleu sur photo)

    Les formulaires sont imbriqués les uns dans les autres et les clés primaires et étrangères les lient les uns aux autres. Tout fonctionne bien même si c pas parfait.

    Mon problème est de pouvoir par exemple afficher toutes les formations des gens du service "compta", du 01/01/05 au 31/12/05.

    J'espère que c'est plus clair mais c'est chaud à expliquer comme cela.

    Merci vraiment de me sortir de ce bourbier. Je suis presque au bout. Regarder bien le code au dessus, il doit pas manquer grand-chose.
    Fichiers attachés Fichiers attachés

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    D'après ce que j'ai compris c'est normal que ça ne fonctionne pas toujours ! Car tu utilises un même critère pour toutes tes sources de données ! Cela ne peut pas fonctionner (à moins que tu n'aies fait des jointures monstrueuses, ce qui ne serait pas bon).

    Tu as autant de source de données que de form. Et chaque source doit être filtrée en fonction de ses propres champs.

    Ton code est juste, mais tu dois construire un critère de filtre pour chaque source. Tu comprends ?
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Je comprends tout à fait et c'est excatement ça, mais je ne sais pas comment faire, niveau syntaxe.

    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
    'Filtre sur les noms
    If Me.FiltreParNom <> "" Then
        strFiltre = "([NomPrenom]='" & Me.FiltreParNom & "')"
        suivi = 1
    End If
     
    'Filtre sur le service
    If Me.FiltreParService <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([Service]='" & Me.FiltreParService & "')"
            Else: strFiltre = "([Service]='" & Me.FiltreParService & "')"
        End If
        suivi = 1
    End If
     
    'Filtrer le sous-formulaire
    With Me.[frm personnel2].Form
        .Filter = strFiltre
        .FilterOn = True
        End With   
    'Filtrer le sous-sous formulaire
    Puis en dessous

    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
    If Me.FiltreParDateMin <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)"
        Else
            strFiltre = "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)"
        End If
        suivi = 1
    End If
     
     
    'Filtre sur les dates
    'Date maxi
    If Me.FiltreParDateMax <> "" Then
        If suivi = 1 Then
            strFiltre = strFiltre & " AND " & "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)"
            Else: strFiltre = "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)"
        End If
        suivi = 1
    End If
     
    With Forms![FrmPrincipal2]![frm personnel2].Form![frmFormation2].Form
        .Filter = strFiltre
        .FilterOn = True
    End With
    Est-ce que je peux scinder ainsi mon code avec les with/end with ? Ou est-ce que je dois faire autrement ?
    Je veux essayer de tout lancer depuis le bouton "rechercher", une fois que les critères sont choisis par l'utilisateur.

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    On va essayer de simplifier le pb. Il y a 1 000 façons de procéder.

    Imaginons par exemple :

    Dans chaque formulaire qui peut être filtré, tu vas créer une Public Sub ApplyFilter. Cette procédure sera chargée de filtrer le RecordSet de son formulaire.

    L'idée, c'est que sur clic de ton bouton Rechercher, tu appeleras chacune de ces méthodes. Ok ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande16_Click()
     
      Me.[frm personnel2].Form.ApplyFilter()
      Me.[frm personnel2].Form![frmFormation2].Form.ApplyFilter()
      'je te laisse faire celui du recyclage ;)
    End Sub
    Là tu vois tout de suite qu'on y voit + clair dans le code du bouton Rechercher !
    Ceci dit on va compliquer un peu nos procédures ApplyFilter en leur ajoutant des arguments, de manière à ce que chaque sous form n'ait pas à connaitre la source des critères qui seront utilisés pour leur filtrage. Cette manière de faire n'est pas obligatoire, mais dans le principe, ça permet de rendre nos classes plus indépendantes.

    Donc la procédure ApplyFilter de frm personnel2, il lui faut quoi comme argument ?
    --> NomPrenom & Service (je pars du principe que les deux sont de Types String)

    Donc dans le module du form frm personnel2, on déclare la procédure ApplyFilter :
    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
    Public Sub ApplyFilter(nomCriteria as String, serviceCriteria as String)
     
    Dim strFiltre As String
     
    'Filtre sur les noms
    If nomCriteria <> "" Then
        strFiltre = "([NomPrenom]='" & nomCriteria  & "')"
    End If
     
    'Filtre sur le service
    If serviceCriteria  <> "" Then
           if len(strFiltre)>0 then strFiltre = strFiltre & " AND "
           strFiltre = "([Service]='" & serviceCriteria  & "')"
    End If
     
    Me.Filter = strFiltre
    Me.FilterOn = True
     
    End Sub
    Du coup, sur clic du bouton Rechercher, on aura :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Commande16_Click()
     
      Me.[frm personnel2].Form.ApplyFilter(nz(Me.FiltreParNom,""), nz(Me.FiltreParService,""))
      'Etc.
    End Sub
    Voilà, je pense que tu sauras faire la suite tout seul.

    Si tu veux pouvoir sasir des crtière facultatifs, ou encore pouvoir prendre en compte des chaines de longueur nulle, tu peux utiliser directement le type Variant au lieu du type fort (String, Date, Long, etc.) pour tes arguments.

    Le seul inconvénient est que tu n'auras pas un contrôle du type dès la compilation (Variant pouvant accepter n'importe quel sous-type).
    Cet inconvénient est mineur dans ton cas je pense. Et tu peux y remédier si tu le souhaite en testant le type avec des fonctions comme IsNumeric, IsDate, etc.

    Sinon au pire, tu peux toujours te créer une classe personnalisée qui encapsule un type donné tout en autorisant les valeur Null... Mais là c'est aller loin pour pas grand chose.
    (\ _ /)
    (='.'=)
    (")-(")

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    La solution de FRED.G est en tout cas plus propre.

    Mais.
    Citation Envoyé par FRED.G
    On va essayer de simplifier le pb. Il y a 1 000 façons de procéder.
    je trouves que intervenir sur la source des formulaires est vraiment plus simple.

    Je crois que en mettant des sources du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * From TaTable Where (NomPrenom=" & iif(Forms!frmPrincipal2!FiltreParNom<>null;Forms!frmPrincipal2!FiltreParNom; TaTable.NomPrenom) & "')
    Ensuite dans le code du bouton recherche, il n'y aura que des .Requery et voila.
    Amicalement

  10. #10
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup pour tes explications. Je vais essayer de les mettre à profit. Je m'en vais du boulot, je pars en déplacement pendant 15 jours. Je te tiens au courant.

    Cordialement,

    Fred

  11. #11
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par DMboup
    je trouves que intervenir sur la source des formulaires est vraiment plus simple.
    +1 rien à dire, des fois on passe à côté des trucs les plus simples à force d'être plongé dans des trucs compliqués.
    (\ _ /)
    (='.'=)
    (")-(")

  12. #12
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Ca y est ! Je suis de retour. Donc je teste la solution de DMBoup.
    J'ai mis dans la source du formulaire frm Personnel 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * From Personnel Where (NomPrenom=" & iif(Forms!frmPrincipal2!FiltreParNom<>null;Forms!frmPrincipal2!FiltreParNom; Personnel.NomPrenom) & "')
    Rien ne se passe quand je change un nom dans la liste.

    Donc j'ai mis dans le bouton rechercher (qui doit lancer le filtre) :

    Rien ne se passe, j'ai du oublier quelquechose...

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    il me dit qu'il y a une erreur de syntaxe String ...

  14. #14
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Pas de solution ???????????

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Au lieu de Docmd.Requery c'est plutot Me.Requery.
    Amicalement

  16. #16
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    ya toujours rien qui se passe.

    Voila exactement le code que j'ai mis à l'ouverture du formulaire frm Personnel 2, qui est lui même dans le formulaire FrmPrincipal2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Personnel WHERE (NomPrenom='" & iif(Forms!FrmPrincipal2!FiltreParNom<>null;Forms!FrmPrincipal2!FiltreParNom; Personnel.NomPrenom) & "');
    Puis dans le bouton rechercher du FrmPrincipal2, j'ai écrit sur Clic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande16_Click()
      Me.Requery
    End Sub
    Et rien ne se passe, même pas une erreur ...

  17. #17
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Pardon, le code SQL que j'ai placé est en fait la source du formulaire frm personnel 2. J'ai été dans les propriétés et j'ai changé la source.
    2 choses :
    - si je mets la syntaxe tel quel , il ne me modifie rien, rien ne marche. Je choisis un nom dans la liste déroulante du formulaire FrmPrincipal2 et dans les sous formulaires en dessous, tous les champs sont blancs, vides.

    - si je retire la côte, , il ne reconnait plus les champs de mon sous formulaire frm personnel 2 et m'indique par des triangles verts (en mode création) que le champ NomPrenom est introuvable ou invalide.

    Aidez moi s'il vous plait, je suis au bord de la crise
    Merci

  18. #18
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Bon je tente la méthode de FRED.G

    J'ai bien compris le principe. Déjà d'entrée quand je pose ton code sur le bouton rechercher, voilà ce qu'il met :

    mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande16_Click()
    Me.[frm personnel2].Form.ApplyFilter(nz(Me.FiltreParNom,""), nz(Me.FiltreParService,""))
    End Sub
    Il me met une erreur de syntaxe et la phrase Me ... en rouge
    Pourquoi ?

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 174
    Points : 178
    Points
    178
    Par défaut
    et en reprenant la méthode de DMboup, avec l'événement "sur changement" des zones de liste une macro "actualiser" chacun des sous-formulaires ?

  20. #20
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 75
    Points : 8
    Points
    8
    Par défaut
    Je vais tester ...

    Je reviens sur la méthode de FRED.G
    Voilà le code du bouton rechercher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Commande16_Click()
    Dim strFiltre As String
    
    Me.[frm personnel2].Form.ApplyFilter(nz(Me.FiltreParNom,""), nz(Me.FiltreParService,""))
    Me.[frm personnel2].Form![frmFormation2].Form.ApplyFilter(nz(Me.FiltreParFormation,""),nz(Me.FiltreParOrganisme,""))
    Me.[frm personnel2].Form![frmFormation2].Form![frmRecyclage].Form.ApplyFilter(nz(Me.FiltreParDateMin,""),nz(Me.FiltreParDateMax,""))
    End Sub
    Je crains que ma syntaxe soit limite pour le dernier Me. frmRecyclage est le sous-sous-sous-formulaire de FrmPrincipal2.

    Il me dit qu'il attend :=

    Passons ...
    Voilà le code que j'ai mis dans le code du formulaire frm personnel2 :
    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
    Public Sub ApplyFilter(FiltreParNom As String, FiltreParService As String)
     
    Dim strFiltre As String
     
    'Filtre sur les noms
    If FiltreParNom <> "" Then
        strFiltre = "([NomPrenom]='" & FiltreParNom & "')"
    End If
     
    'Filtre sur le service
    If FiltreParService <> "" Then
           If Len(strFiltre) > 0 Then strFiltre = strFiltre & " AND "
           strFiltre = "([Service]='" & FiltreParService & "')"
    End If
     
    Me.Filter = strFiltre
    Me.FilterOn = True
     
    End Sub
    Voilà le code que j'ai mis dans le code du formulaire frmFormation2 :
    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
    Public Sub ApplyFilter(FiltreParFormation As String, FiltreParOrganisme As String)
     
    Dim strFiltre As String
     
    'Filtre sur les TypeFormation
    If FiltreParFormation <> "" Then
        strFiltre = "([TypeFormation]='" & FiltreParFormation & "')"
    End If
     
    'Filtre sur le Organisme
    If FiltreParOrganisme <> "" Then
           If Len(strFiltre) > 0 Then strFiltre = strFiltre & " AND "
           strFiltre = "([Organisme]='" & FiltreParOrganisme & "')"
    End If
     
    Me.Filter = strFiltre
    Me.FilterOn = True
     
    End Sub
    Voilà le code que j'ai mis dans le code du formulaire frmRecyclage :
    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
    Public Sub ApplyFilter(FiltreParDateMin As Date, FiltreParDateMax As Date)
     
    Dim strFiltre As String
     
    'Filtre sur DateMin
    If FiltreParDateMin <> "" Then
        strFiltre = "([DateFormation] >= #" & Format(Me.FiltreParDateMin, "mm/dd/yyyy") & "#)"
    End If
     
    'Filtre sur DateMax
    If FiltreParDateMax <> "" Then
           If Len(strFiltre) > 0 Then strFiltre = strFiltre & " AND "
           strFiltre = "([DateFormation]<=#" & Format(Me.FiltreParDateMax, "mm/dd/yyyy") & "#)"
    End If
     
    Me.Filter = strFiltre
    Me.FilterOn = True
     
    End Sub

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/10/2014, 10h27
  2. [AC-2007] Filtre sur liste déroulante dans sous-formulaire
    Par petitpom dans le forum IHM
    Réponses: 4
    Dernier message: 18/07/2012, 09h41
  3. Réponses: 1
    Dernier message: 28/02/2008, 21h40
  4. Réponses: 8
    Dernier message: 24/11/2006, 15h06
  5. Action sur sous-formulaire filtré
    Par thevenix dans le forum IHM
    Réponses: 4
    Dernier message: 20/06/2005, 00h39

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