[visual basic] problème de Combobox

Fermé
john - 23 juin 2006 à 15:20
 john - 26 juin 2006 à 13:59
Bonjour,

je suis en train de lister des extensions de fichiers pour les mettre dans des combobox.Pour cela, j'utilise :

macombo.AddItem Right(fichier, 3) ( ex : doc , pdf ... )

Mais le problème c'est que j'utilise une boucle pour toutes les ajouter et j'en ai en double , tripple...

Comment faire pour les avoir une fois uniquement ?

Merci
A voir également:

5 réponses

Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
24 juin 2006 à 16:16
salut john,

une solution serait de tout stocker dans un tableau, de trier ce tableau, puis de le parcourir pour en enlever tous les doublons. Ensuite seulement, tu fais ComboBox.AddItem avec les éléments de ce tableau.

0
Merci de ta réponse.

Ce que j'étais en train de faire, puisque j'ai une boucle qui liste les extensions, à l'intérieur je faisais :

mavariable = Right(fichier, 3)
If macombo.Text <> mavariable Then 'si l'extension existe pas, je l'ajoute
macombo.AddItem (mavariable)
End If

Mais il compare uniquement la première valeur de la combo qui est : " " donc il ajoute quand même.
Il faudrait que je puisse comparer avec ce qu'il y a dans la combo.Comment faire ?

Merci.
0
jpcheck Messages postés 1 Date d'inscription lundi 26 juin 2006 Statut Membre Dernière intervention 26 juin 2006
26 juin 2006 à 11:13
comme kobaya te l'a dit, il faut d'abord faire une liste de toute les extensions que tu veux mettre, puis les filtrer, pour supprimer les doublons, et seulement après tu ajoutes automatiquement chaque extension depuis la liste filtrée, donc une seule fois. ^^
0
Kobaya Messages postés 282 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 214
26 juin 2006 à 11:49
Sub RemplirComboSansDoublons()
    Dim rngCell     As Range
    Dim intNbItem   As Integer
    Dim blnFlag     As Boolean
    
    blnFlag = False
    For Each rngCell In Range("A1").CurrentRegion.Cells
        For intNbItem = 0 To ComboBox1.ListCount - 1
            If rngCell.Value = ComboBox1.List(intNbItem) Then
                blnFlag = True
                Exit For
            End If
        Next
        If Not blnFlag Then
            ComboBox1.AddItem rngCell.Value
        End If
    Next
End Sub


Ca vaut peut-être le coup de comparer la rapidité de ce code avec la solution que je t'avais décrite auparavant. De plus, ici les éléments ne sont pas triés.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci pour vos réponses.

En m'aidant de ce que tu proposais kobaya, j'ai réussi en changeant certaines choses à supprimer mes doublons !!
Je n'ai pas tester la méthode des tableaux ( enfin si, mais jamais réussi à faire fonctionner... ) Je m'emmêler dans les boucles..

Bref merci à ceux qui se sont penchés sur mon problème !
0