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 :

[Access 2003/VBA]Insérer un grand nombre de valeurs dans une ComboBox.


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut [Access 2003/VBA]Insérer un grand nombre de valeurs dans une ComboBox.
    Bonsoir à tous,

    Voilà, je dois insérer dans une comboBox, un grand nombre d'éléments (une liste des villes) ors apparemment arrivé à un momment donné il plante.

    Savez vous faire pour contourner ce problème ?

    Par avance merci.

    Marco.

  2. #2
    Membre actif Avatar de ActionAccess
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 213
    Points
    213
    Par défaut
    Bonsoir,

    Pour contourner ce problème, il faut créer une table qui sera utilisée comme Rowsource du combobox.

    Cdlt,
    ActionAccess

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Peut-être une piste ?
    On peut remplir une liste à l'aire d'une fonction dont voici le prototype:
    Function nom-de-fonction(chp As Control, id As Variant, lgn As Variant, col As Variant, code As Variant) As Variant
    Voir aide d'access 'Propriétés RowSourceType (OrigineSource), RowSource (Contenu)'
    Dans remarque cliquer sur arguments de code d'une fonction spécifique,
    pour plus de détails et exemple.

    Je viens d'essayer, ça marche pas mal, surtout pour des fonction d'énumération.

    Bon courage.

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par LedZeppII
    Bonsoir,

    Peut-être une piste ?
    On peut remplir une liste à l'aire d'une fonction dont voici le prototype:
    Function nom-de-fonction(chp As Control, id As Variant, lgn As Variant, col As Variant, code As Variant) As Variant
    Voir aide d'access 'Propriétés RowSourceType (OrigineSource), RowSource (Contenu)'
    Dans remarque cliquer sur arguments de code d'une fonction spécifique,
    pour plus de détails et exemple.

    Je viens d'essayer, ça marche pas mal, surtout pour des fonction d'énumération.

    Bon courage.

    Je ne vois pas ce que ça va changer quant à la limitation du nombre d'élements

    La réponse d'actionAccess semble adéquate

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut Réponse à Tofalu
    Comme Cotmar parle <<d'insérer des valeurs dans une comboBox>> j'ai pensé qu'il utilisait une liste de valeurs,
    et que la limite était celle de la propriété RowSource. Pas celle de la liste.
    Mais je suis peut-être complètement à côté.
    A+

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    SAlut à tous,

    En fait ce qui s'est produit, c'est que j'ai récupéré des valeurs dans un recordsource pour les ajouter (additem) dans une comboBox.

    Le problème c'est que ça fonctionnait très bien sur un jeux d'essai limité, mais que ça a planté avec des données réelles.

    A un momment il a envoyé un message d'erreur parlant du dimensionnement de la propriété (je pense que c'est celle de la combo Box puisque la dernière valeur qui y apparaissait était tronquée. Ce qui est curieux, c'est que la veleur qui l'a fait planter se trouve plusieurs lignes plus loin et apparemment sans raison logique.

    Ca m'intéresserait de comprendre ce qui s'est passé, mais malheureusement je manque de temps car je dois faire une presentation dan la boite où je suis presta et ma chef a menacé d'arrêter la mission si jamais ça ne marchait pas.

    Donc je me vois contraint de chercher une solution plus sûre. Je ne renonce pas à comprendre bien entendu. Si pour l'une ou l'autre question, vous aviez une petite idée, j'en serais extrêment intéressé.

    Par avance merci.

    Marco.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour à tous,

    Pour contourner mon problème, j'essaye sur vos conseils de construire une requête dans l'éditeur d'Access qui ensuite sera paramétrée et intégrée dans mon code VBA.

    Mais apparemment ça ne marche pas. Est ce que vous pourriez m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     
    SELECT DISTINCT dbo_OSMOSE_SITE_GEOGRAPHIQUE.COMMUNE
    FROM [Select dbo_OSMOSE_SITE_GEOGRAPHIQUE.COMMUNE,2 As Position From dbo_OSMOSE_SITE_GEOGRAPHIQUE  
    INNER JOIN dbo_OSMOSE_SITE_GEOGRAPHIQUE ON dbo_OSMOSE_POTENTIEL.NUM_SITE_GEO = dbo_OSMOSE_SITE_GEOGRAPHIQUE.NUM_SITE_GEO
    WHERE (((dbo_OSMOSE_POTENTIEL.STATUT_POTENTIEL)="VIVANT"))]
    Union 
    [Select TOP 1 "",0 From dbo_OSMOSE_POTENTIEL Union 
    Select TOP 2 "-Tous-",1 From dbo_OSMOSE_POTENTIEL]. AS [%$##@_Alias]
    ORDER BY Position;
    Par avance merci.

    Marco.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    J'essaye de travailler sur un exemple plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     
    select  ville.ville 
    from 
    [Select Ville.Ville,2 As Position From Ville Union 
    Select TOP 1 "",0 From Ville Union 
    Select TOP 2 "-Tous-",1 From Ville]. AS [%$##@_Alias]
    ORDER BY Position
    where ville.region = "MED";
    Mais qui ne marche toujours pas. Est ce que vous pourriez m'aider s'il vous plait ?

  9. #9
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour,

    j'ai comme l'impression que ton code SQL n'est pas correct.

    Tu veux 2 colonnes, je pense 1 pour la sélection et une pour l'information or dans la partie avant l'union il n'y a qu'une colonne et dans la seconde 2 (j'espère que tu comprends)
    dans un 1er temps vérifie si la partie 1 de ton code fonctionne avec le QBE et te donne bien 2 champs ensuite tu peux écrires ton code avec Union...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT dbo_OSMOSE_SITE_GEOGRAPHIQUE.COMMUNE
    FROM [Select dbo_OSMOSE_SITE_GEOGRAPHIQUE.COMMUNE,2 As Position From dbo_OSMOSE_SITE_GEOGRAPHIQUE  
    INNER JOIN dbo_OSMOSE_SITE_GEOGRAPHIQUE ON dbo_OSMOSE_POTENTIEL.NUM_SITE_GEO = dbo_OSMOSE_SITE_GEOGRAPHIQUE.NUM_SITE_GEO
    WHERE (((dbo_OSMOSE_POTENTIEL.STATUT_POTENTIEL)="VIVANT"))]
    bon courrage

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour Alexandre,

    En fait non je souhaite vraiement faire ça sur une seule colonne, mais en faisant ma requête (qui va comporter des jointures) et en rajoutant au résultat de la requête une ligne vide et un ligne avec le chaîne de caractères "-Tous-". C'est pour mettre dans une comboBox (si possible triée).

    Un autre point c'est c'est une requête que je construit dynamiquement à l'exécution (je récupère le nom de la région pour n'afficher que les villes puis que les sites de la région de l'utilisateur).

    Voilà j'espère que c'est plus cair.

    Merci en tous els cas et à plus tard.

    Marco.

  11. #11
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    Ce que j'entend par 1 seule colonne c'est à dire que dans ton combox tu vas cetainement afficher le nom de la ville mais pour la recherche tu vas te baser sur le code de la ville ou le n° ou autre?
    Si c'est le cas le résultat de ta requête doit avoir 2 champs, 1 pour la colonne liée (que tu vas cacher) et 1 pour l'affichage pour l'utilisateur.

    si ce n'est pas le cas tu dois avoir 1 seule colonne comme résultat de ta requête mais demême pour l'union (sinon çà bug) or ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select TOP 1 "",0 From Ville Union
    comporte 2 champs à la sélection "" et 0

    J'ai bien compris que tu voulais rajouter des lignes à ta requête mais avant de faire cela il faut vérifer que ta requête dynamique fonctionne déjà sans ces lignes et te permet de charger ta combox
    Puis dans un 2ème temps on verra pour mettre les lignes vides

    A+

  12. #12
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    dans ta première sous requête il y a
    ... From dbo_OSMOSE_SITE_GEOGRAPHIQUE INNER JOIN dbo_OSMOSE_SITE_GEOGRAPHIQUE ON ...
    alors que tu voulais sans doute écrire
    ... From dbo_OSMOSE_SITE_GEOGRAPHIQUE INNER JOIN dbo_OSMOSE_POTENTIEL ON ...

    Pour ta requête simplifiée essaie comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TMP1.Ville
    FROM [Select TOP 1 "" As Ville ,0 As Position From Ville UNION 
          Select TOP 1 "-Tous-" As Ville, 1 As Position From Ville UNION
          Select Ville.Ville, 2 As Position From Ville
          where ville.region = "MED"
          ORDER BY Position]. AS TMP1 ;
    Bon courage

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour à tous,

    Merci de votre aide à tous. A présent ça marche.

    Bonne fin de journée à tous. Je croise les doigts (y compris ceux des pieds ) car ma présentation à ma chef est deman matin et de la manière dont celà va se passer dépendra le fait que je reste ou pas ici.

    A bientôt.

    Marco.

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

Discussions similaires

  1. vba excel compter un nombre de valeurs dans un tableau
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/09/2010, 15h09
  2. [XL-2003] Récupérer le nombre de valeurs dans une plage
    Par baggie dans le forum Excel
    Réponses: 3
    Dernier message: 30/04/2010, 14h24
  3. Réponses: 6
    Dernier message: 04/11/2008, 22h35
  4. Réponses: 9
    Dernier message: 13/08/2008, 12h10
  5. grand nombre de champ dans une table
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 21/06/2006, 18h54

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