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 :

Mise à jour zone de liste déroulante grace à un code


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut Mise à jour zone de liste déroulante grace à un code
    Bonjour,

    j'ai un formulaire de saisi où j'ai une zone de liste déroulante. J'ai déjà rentré les mots les plus utilisés mais je voudrais que si l'utilisateur ne trouve pas un mot il le rentre manuellement et que celui ci s'incrémente automatiquement ds ma zone de liste déroulante.

    Y a t il un code (VBA) pour faire ceci??

    merci d'avance
    chibredor

  2. #2
    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,

    il te faut voir dans la faq il y a du code pour cela

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par Alexandre Sahli Voir le message
    bonjour,

    il te faut voir dans la faq il y a du code pour cela
    j'ai regardé mais rien ne marche
    tu me conseilles lequel toi??

  4. #4
    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
    si ta liste est une zone que charge avec des noms
    tu peux regarder là
    http://access.developpez.com/faq/?page=zdl#AddItem

    si par contre ta liste est chargée par une requête tu peux adapter le code suivant:
    http://access.developpez.com/faq/?page=zdl#AbsDsListe

    bonnes chances

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Merci Alexandre

    j'ai mis ce code
    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
    30
    31
    32
    33
     
     
     
    Private Sub MyComboBox_AfterUpdate()
     
    Const NB_ITEMS As Long = 20 'Nombre d'éléments archivés dans la liste
    Dim b As Byte
     
      'Maj de la liste des derniers critères recherchés
      With MyComboBox
     
        'Si la valeur saisie est un Null _
          ou une chaîne de longeur nulle _
          ou égale au premier item, _
          alors aucune Maj de la liste n'est nécessaire.
        If Nz(.Value, "") = "" Or .Value = .Column(0, 0) Then Exit Sub
     
        'Etant donné qu'on ne souhaite pas de doublons, _
          on va parcourir tous les éléments _
          pour éliminer un éventuel doublon avant d'ajouter notre valeur en haut de liste.
        For b = 1 To .ListCount - 1
          If .Column(0, b) = .Value Then .RemoveItem b:   Exit For
        Next b
     
        'Ajoute la nouvelle saisie
        .AddItem Item:=.Value, Index:=0
     
        'Limite la liste à NB_ITEMS éléments
        If .ListCount = NB_ITEMS Then .RemoveItem NB_ITEMS - 1
     
      End With
     
    End
    par contre la nouvelle valeur saisie s'enlève lorsque je ferme mon formulaire et celle ci se met en haut de la liste alors que j'aimerai qu'elle se mette à sa place (ordre alphabétique)
    Tu as une idée?

  6. #6
    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
    Citation Envoyé par chibredor Voir le message
    par contre la nouvelle valeur saisie s'enlève lorsque je ferme mon formulaire et celle ci se met en haut de la liste alors que j'aimerai qu'elle se mette à sa place (ordre alphabétique)
    Oui c'est peut être normal car tu sors de ta boucle et tu rajoutes 1 idem qu'il va mettre au début.
    C'est aussi normal que lorsque tu refermes le formulaire la liste s'efface, cela dépend de comment tu charges ta liste à l'ouverture du formulaire.

    pour le tri alphabétique ce serait préférable d'avoir une table dans laquelle tu mets les éléments de ta liste. Avec du code tu pourrais aussi limiter le nombre d'enregistrement à 20. Avec cette table les valeurs introduites par les utilisateurs seront conservées.

    bonne chance

  7. #7
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Oui je vois ce que tu veux dire mais quand je créé une autre table ça marche pas!
    je pense qu'il faut que les deux aient un champ en commun afin de pouvoir " se référencé" mutuellement .

    Je prend un exemple: j'avais un formulaire avec nom, prénom, sexe ... et une zone de liste déroulante avec des nationalités. Au début j'en avais rentré quelques unes (séparées par des ; ) et je disais ORIGINE SOURCE : liste des valeurs

    Maintenant: ORIGINE SOURCE : table / requete
    j'ai créé une autre table nationalité avec comme champ:
    N° qui s'incrémente automatiquement
    Nationalité avec des nationalités que j'avais déjà rentré

    Comment je fais pour lier les deux?
    si mon pb vient de là bienn sur

  8. #8
    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
    Si je comprends bien tu dois avoir une table :

    client ou personne avec les champs suivants:
    Nom, Prénom,.....,IDNationalite;.....

    Puis tu as une table
    Nationalité avec les champs suivants:

    IDNationalite(champs auto incrément);DescrNationalite;....

    La table client est liée avec la table Nationalité

    Puis ta zone de liste est basée sur une requête avec la table nationalité. avec les champs IDNationalite et DescrNationalite
    la colonne liée est la colonne 1 et tu mets les largeur de colonne à : 0cm; 5 cm

    la source de la zone de liste c'est le champs IDNationalite de ta table client

    j'espère avoir été clair ce n'est pas facile à expliquer

  9. #9
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Je suis un peu perdu dsl mais je sens que je suis pas loin
    si tu es d'accord je tenvoie une partie de ma base en MP

  10. #10
    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
    mets là plutôt à disposition en fichier annexe

  11. #11
    Membre à l'essai
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 13
    Points
    13
    Par défaut
    Mon fichier est tros gros..je dépasse de 200ko

Discussions similaires

  1. Mise à jour d'une liste déroulante
    Par maxeur dans le forum IHM
    Réponses: 2
    Dernier message: 30/01/2007, 13h52
  2. Réponses: 2
    Dernier message: 26/01/2007, 15h56
  3. Réponses: 3
    Dernier message: 26/09/2006, 11h17
  4. Réponses: 5
    Dernier message: 27/08/2006, 14h18
  5. Réponses: 3
    Dernier message: 30/06/2006, 22h56

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