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

Access Discussion :

[VBA] Pas de choix dans liste deroulante = ALL


Sujet :

Access

  1. #1
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut [VBA] Pas de choix dans liste deroulante = ALL
    Bonjour,

    Jai une fonction qui permet de cherche une liste d'email dans une table et de les exporter sous outlook.

    Je choisi sur un formulaire les criteres de filtre sur la table.

    Mon probleme est que si je souhaites choisir toutes les valeurs d'un criteres sans rien selectioner, un genre de * dans la requete en vba.

    Voici mon code initiale complet:

    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
    25
    26
    27
    28
    29
    Private Sub Commande2_Click()
    Dim db As Database
    Set db = CurrentDb
     
    Dim SQL As String, RS As DAO.Recordset
     
    SQL = "SELECT Mid([email],9,Len([email])-9) AS EmailFormatte, Client.idTypeClient, Client.idActiviteClient, AdresseClient.idPays, TypeAdresseClient.AdresseDeFacturation FROM TypeAdresseClient INNER JOIN (Client INNER JOIN AdresseClient ON Client.idClient = AdresseClient.idClient) ON TypeAdresseClient.idTypeAdresseClient = AdresseClient.idTypeAdresseClient WHERE Mid([email],9,Len([email])-9) Is Not Null AND Client.idTypeClient= " & Me![TypeClient] & " AND Client.idActiviteClient=" & Me![ActiviteClient] & " AND AdresseClient.idPays=" & Me![Pays] & " AND TypeAdresseClient.AdresseDeFacturation=Yes;"
    Set RS = db.OpenRecordset(SQL)
     
    Dim list As String
    Nb1 = RS.RecordCount
    If [Nb1] > 0 Then
    Do
    list = list & RS![EmailFormatte] & ";"
    RS.MoveNext
    Loop While Not RS.EOF
    'Loop While rs.RecordCount < 90
    testing = list
    Nb = RS.RecordCount
     
     
    If [testing] <> "" Then
    Application.FollowHyperlink "mailto:" & [testing]
    End If
    End If
     
    testing = Null
     
    End Sub

    LA aprtie qui est nous interresse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Mid([email],9,Len([email])-9) AS EmailFormatte, Client.idTypeClient, Client.idActiviteClient, AdresseClient.idPays, TypeAdresseClient.AdresseDeFacturation FROM TypeAdresseClient INNER JOIN (Client INNER JOIN AdresseClient ON Client.idClient = AdresseClient.idClient) ON TypeAdresseClient.idTypeAdresseClient = AdresseClient.idTypeAdresseClient WHERE Mid([email],9,Len([email])-9) Is Not Null AND Client.idTypeClient= " & Me![TypeClient] & " AND Client.idActiviteClient=" & Me![ActiviteClient] & " AND AdresseClient.idPays=" & Me![Pays] & " AND TypeAdresseClient.AdresseDeFacturation=Yes;"

    Et voici un peu le genre de truc que je souhaiterais, mais ca ne fonctionne pas, la je lai modifier uniquement pour le type client deja dans un premier temps: à noter que Me!TypeClient est le controle deroulant sur le form et TypeClients est la variable que je crée pour la requete VBA:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim TypeClients As String
    TypeClients = Me![TypeClient]
    If Me![TypeClient] Then
    TypeClients = "*"
    End If
    SQL = "SELECT Mid([email],9,Len([email])-9) AS EmailFormatte, Client.idTypeClient, Client.idActiviteClient, AdresseClient.idPays, TypeAdresseClient.AdresseDeFacturation FROM TypeAdresseClient INNER JOIN (Client INNER JOIN AdresseClient ON Client.idClient = AdresseClient.idClient) ON TypeAdresseClient.idTypeAdresseClient = AdresseClient.idTypeAdresseClient WHERE Mid([email],9,Len([email])-9) Is Not Null AND Client.idTypeClient= " & TypeClients & " AND Client.idActiviteClient=" & Me![ActiviteClient] & " AND AdresseClient.idPays=" & Me![Pays] & " AND TypeAdresseClient.AdresseDeFacturation=Yes;"
    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    Salut

    voila comment je fais dans ce genre de cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SQL = "SELECT Mid([email],9,Len([email])-9) AS EmailFormatte, Client.idTypeClient, Client.idActiviteClient, AdresseClient.idPays, TypeAdresseClient.AdresseDeFacturation FROM TypeAdresseClient INNER JOIN (Client INNER JOIN AdresseClient ON Client.idClient = AdresseClient.idClient) ON TypeAdresseClient.idTypeAdresseClient = AdresseClient.idTypeAdresseClient "
    If Me.TypeClient Then
    SQL= SQL & "
    WHERE Mid([email],9,Len([email])-9) Is Not Null AND  Client.idActiviteClient=" & Me![ActiviteClient] & " AND AdresseClient.idPays=" & Me![Pays] & " AND TypeAdresseClient.AdresseDeFacturation=Yes;"
    else
    SQL= SQL & "WHERE Mid([email],9,Len([email])-9) Is Not Null AND Client.idTypeClient= " & Me![TypeClient] & " AND Client.idActiviteClient=" & Me![ActiviteClient] & " AND AdresseClient.idPays=" & Me![Pays] & " AND TypeAdresseClient.AdresseDeFacturation=Yes;"

  3. #3
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    ca ne fonctionne pas au niveau de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    If Me.TypeClient Then
    Apparement ca ne marche pas a ce niveau....

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    ca ne marche pas a ce niveau....
    Qu'est ce qu'il dit comme erreur ?

    j'ai repris ta condition If sans savoir ce que tu veux tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me![TypeClient] Then
    c'est à toi de trouver le bon test

  5. #5
    Membre régulier Avatar de hugo69
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    512
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 512
    Points : 122
    Points
    122
    Par défaut
    en fait jai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsNull(Me.TypeClient) Then
    et la ca fonctionne....

    Le seul probleme est que si plusieurs listes sont vides (yen a 3 au total), il faut creer autant de possibilités, 9 en tout donc, mais cest pas grave cest ce que je vais faire

    Merci à toi

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/11/2014, 10h02
  2. [AC-2010] Annuler choix dans liste deroulante
    Par marg0t dans le forum IHM
    Réponses: 12
    Dernier message: 03/07/2013, 14h26
  3. [AC-2010] Si pas de selection dans liste deroulante alors
    Par dodo28 dans le forum Access
    Réponses: 5
    Dernier message: 06/01/2012, 16h59
  4. Lecture choix dans liste deroulante
    Par angelevil dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 16h20
  5. Réponses: 2
    Dernier message: 25/11/2005, 12h09

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