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

Contribuez Discussion :

une autre facon de remplir une listbox ou combobox sans doublons


Sujet :

Contribuez

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut une autre facon de remplir une listbox ou combobox sans doublons
    bonjour a tous

    en aidant un forumeur je me suis apercu qu' avec une plage de cellule il y avait un autre moyen de remplir une listbox ou combobox que d'utiliser des variable de type tableau(item unique)ou meme le dictionnaire avec la reference microsoft scripting runtime"

    avec cette solution nous allons utiliser tout simplement une variable de type string que l'on va comparer a la valeur de chaque cellule avec la fonction "instr" tout betement

    j'en ai fait une petite fonction

    voila le code de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function mode_remplissage2(usf As Object, feuille As Variant, listo As Object, plage)
     
    dim phrase as string
     usf.Controls(listo.Name).Clear
        For Each cel In Sheets(feuille).Range(plage)
            If InStr(phrase, cel) > 0 Then
            Else: usf.Controls(listo.Name).AddItem cel
            End If
            phrase = phrase & "     " & cel
        Next
        phrase = ""
    End Function
    et voila comment on va l'appeler de l'userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
     mode_remplissage2 Me, 1, ComboBox1, ("a2:a" & [a65000].End(xlUp).Row)
    End Sub
    les argument sont
    me pour l'userform
    le chiffre 1 represente l'index du sheets ou se trouve la plage

    veuillez noter que l'argument pour le shhets est variant et peut donc etre interprété comme un string donc a la place de 1 vous pouvez mettre le nom du sheets
    ensuite vous l'avez compris le nom du control list(combobox ou listbox)
    ensuite la plage de cellule a prendre en compte

    voila vraiment par hazard en voulant faire un autre travail j'ai fait cette trouvaille

    bonne utilisation
    au plaisir

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut Patrick,
    Désolé mais ca ne marche pas dans les cas des mots de la même famille ou similaires :

    ex :potiron
    pot
    capote
    capot
    n'affiche que 2 sur 4
    essaye comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function mode_remplissage2(usf As Object, feuille As Variant, listo As Object, plage)
     
    Dim phrase As String
     usf.Controls(listo.Name).Clear
        For Each cel In Sheets(feuille).Range(plage)
            If InStr(phrase, "¤" & cel & "¤") > 0 Then
            Else: usf.Controls(listo.Name).AddItem cel
            End If
            phrase = phrase & "¤" & cel & "¤"
        Next
        phrase = ""
    End Function

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    je n'avais pas vu sous cet angle

    mais oui tu a raison

    c'était surtout le coté tout bête qui m'a surpris on trouve de tout sur le remplissage sans doublon ça va de l'usine a gaz au code les plus incompréhensible

    j'ai trouvé que comparer une variable string incrementée en fin de fonction par la fonction "instr" était remarquable par sa simplicité

    pas de références a activer par de variable tableau etc.....

    enfin bref tu m'a compris
    on garde ton exemple (j'aime beaucoup le "JOCKER" qui deviens indispensable )

    au plaisir

Discussions similaires

  1. [MySQL] Remplir une liste déroulante à partir d'une autre liste dynamique
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 31/12/2008, 08h54
  2. [A-03] Se servir d'une table pour en remplir une autre
    Par keeepcoool dans le forum Modélisation
    Réponses: 9
    Dernier message: 26/12/2008, 12h44
  3. Remplir une combo en fonction d'une autre
    Par loic20h28 dans le forum Visual Studio
    Réponses: 35
    Dernier message: 29/01/2008, 17h48
  4. Réponses: 2
    Dernier message: 26/05/2007, 17h28
  5. Remplir une liste au changement d'une autre liste
    Par JauB dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 12/01/2007, 10h35

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