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

Macros et VBA Excel Discussion :

Effacement des items dans une Combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 10
    Par défaut Effacement des items dans une Combobox
    Bonjour à tous.

    Afin d'augmenter la rapidité de saisie d'un champ d'une Combobox assez remplie j'avais dans l'idée de la vider en fonction des caractères saisis

    J'ai beaucoup cherché mais pas vraiment trouvé. J'ai sans doute multiplier les variables un peu inutilement. C'était pour me clarifier la chose.
    Donc en théorie je dois :

    Lors de l'appui sur touche, la macro prend les caractères inscrits et les compare à ceux présents (au début et la même longueur de la chaine ) dans la liste du combobox. Si les caractères sont différents l'entrée est supprimée. On continue jusqu'à la fin.

    Je pense avoir fait une erreur dans ma boucle de parcours de la liste mais peut être aussi dans les comparaison de caractères.

    Je vois une autre faille si il y a un effacement d'un caractère et je ne sais pas trop comment le gérer.

    La liste est générée ailleurs.

    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
     
    Sub NomBox_Change()
    Dim lettre As Characters
    Dim l As String
    Dim Nom As String
    Dim limite As Integer
    Dim lenght As Integer
    Dim i As Integer
    Dim tampon
    limite = NomBox.ListCount
    Nom = CStr(NomBox)
    lenght = Len(Nom)
     
     
    For i = 1 To lenght
      l = Left(Nom, i)
        limite = NomBox.ListCount
        For j = 0 To limite - 1
            tampon = Left(NomBox.List(j), i)
            If l <> tampon Then NomBox.RemoveItem (j)
            limite = NomBox.ListCount
        Next j
     
    Next
     
    End Sub
    Dans ma tête ca marche et je tourne un peu en rond sans trouver une solution.

    Le petit débutant en VBA que je suis vous remercie.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Commence par ouvrir ton aide de VBA et recherche Combobox.removeitem et tires-en tes conclusions

    Ensuite:

    http://www.developpez.net/forums/d94...lons-combobox/

    http://www.developpez.net/forums/d67...items-listbox/

    https://cse.google.fr/cse?cx=partner...ver&gsc.page=2

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 10
    Par défaut
    Merci de ta réponse nocturne. Je vais potasser ce que tu me fournies. Si j'y arrive je posterais la solution.

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour Papibrow,

    Je ne suis pas certain de comprendre ce que tu veux faire, C'est une saisie semi-automatique que tu veux faire ?

    Si c'est le cas, la propriété MatchEntry à 1 (valeur par défaut de mémoire) permet justement cela.
    A chaque caractère saisi dans la ComboBox, la première valeur (ordre alphabétique) pouvant matcher avec la saisi sera affiché dans la ComboBox.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 10
    Par défaut
    Alors, clementmarcotte merci j'ai trouvé ma solution sur les liens donnés. Je tacherais de mieux chercher. Je parcours ma boucle for de bas en haut pour Eviter les problèmes d'index.

    A antonysansh. Pour la propriété match entry je trouve ca peu pratique. Quand je tape une lettre il sélectionnait directement le mot devais effacer pour continuer d'écrire.

    Je poste ici la boucle utilisée et corrigée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    For j = limite - 1 To 0 Step -1
            tampon = Left(NomBox.List(j), i)

    Pour la gestion de la touche backspace ou suppr qui en cas d'erreur de frappe vont débouchée sur une liste vide j'ai pas vraiment trouvé quelque chose de propre. Elle sont interdites mais on peut réinitialiser le formulaire pour reprendre la liste à nouveau.

  6. #6
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Citation Envoyé par Papibrow Voir le message

    A antonysansh. Pour la propriété match entry je trouve ca peu pratique. Quand je tape une lettre il sélectionnait directement le mot devais effacer pour continuer d'écrire.

    Le texte est complété ET sélectionné mais le curseur ne change pas de position alors tu peux très bien continuer la saisie ou même supprimer des caractères.

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 10
    Par défaut
    Je regarde ça plus en détail alors. Merci

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

Discussions similaires

  1. Suppression des blancs dans une ComboBox
    Par sami35 dans le forum Général VBA
    Réponses: 6
    Dernier message: 10/05/2007, 17h07
  2. Création d'items dans une comboBox
    Par Nicolas2074 dans le forum Sharpdevelop
    Réponses: 3
    Dernier message: 26/04/2007, 09h49
  3. Réponses: 3
    Dernier message: 29/08/2006, 12h50
  4. [c#] [dataadapter] effacer des ranger dans une base de donne
    Par mahboub dans le forum Accès aux données
    Réponses: 4
    Dernier message: 02/12/2005, 01h26
  5. [Portal 9iAS] : ordre des items dans une région
    Par melitta dans le forum Oracle
    Réponses: 8
    Dernier message: 21/10/2004, 14h01

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