[Déplacé .Net --> VBA] probleme de trie avec combobox

fash10 Messages postés 3 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 20 janvier 2010 - 20 janv. 2010 à 10:52
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 21 janv. 2010 à 00:40
Je suis entrain de crééer un combobox et j'aimerais trier ma liste par ordre croissant et d'enlever dans la liste les blancs
Voici mon programme:
Private Sub Listerecherchesupport_Enter()

Dim filtre As Integer


Listerecherchesupport.Clear

For filtre = 2 To Range("I65000").End(xlUp).Row 'Récupère les données de la colonne H...

Listerecherchesupport = Range("I" & filtre)

If Listerecherchesupport.ListCount = -1 Then Listerecherchesupport.AddItem Range("I" & filtre) '...et filtre les doublons

Listerecherchesupport.ListCount = 0 'permet de mettre les données dans l'ordre du tableau

Next

End Sub

pouvez vous m'aider s'il vous plait merci par avance

10 réponses

tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 juillet 2013
20 janv. 2010 à 11:32
salut je comprend pas pas ce que tu fait la

If Listerecherchesupport.ListCount = -1 Then Listerecherchesupport.AddItem Range("I" & filtre) '...et filtre les doublons

si ta liste est vide alors tu ajoute, ca va marcher qu'une fois...
au second tour quand i vaut 3 ton listcount n'est plus egale a -1 et donc ne va pas ajouter

For filtre = 2 To Range("I65000").End(xlUp).Row 'Récupère les données de la colonne H...

Listerecherchesupport = Range("I" & filtre)

'si il y a quelque chose dans la cellule
if listerecherchesupport <>""
alors je l'ajoute
Listerecherchesupport.AddItem Range("I" & filtre)
Next

'a la fin de tout les ajouts
'on tri la liste
listerecherchesupport.sorted=true
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2010 à 11:43
Bonjour,

1) problème vba/excel et non VB.Net (qui, lui, aurait une combo triable)

2) 16500 lignes ! trier la combo va être pénalisant, c'est certain !

Il vaudra bien mieux agir autrement (mais on n'en parlera pas tant que discussion non déplacée
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 juillet 2013
20 janv. 2010 à 13:26
monter les lignes dans un tableau memoire et appliquer un algorithme de tri, il y en a plusieurs, suffit de trouver celui qui correspond le mieux par rapport au donnée a trier
0
tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 juillet 2013
20 janv. 2010 à 13:27
comment faire autrement?
0

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

Posez votre question
fash10 Messages postés 3 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 20 janvier 2010
20 janv. 2010 à 13:56
merci

je vous demande juste comment je peux créé une liste combobox pour 65000 supports qui serai trier par ordre alphabétique sans doublons et sans case blanche et qui ce met à jour automatiquement.

C'est une liste de recherche que je veux faire

si vous avez des exemples je suis preneur
0
tresorsdevie Messages postés 135 Date d'inscription lundi 17 juin 2002 Statut Membre Dernière intervention 20 juillet 2013
20 janv. 2010 à 15:43
une combobox de 65000 elements j'ai jamais essayer mais je ne sais pas si ca le supporte... en tout cas sans faie planté ton appli, peut etre qu'il y a moyen sur excel de joué plutot avec les filtres des colonnes et les tri integré a ces filtres..
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2010 à 17:29
je vous demande juste comment je peux créé une liste combobox pour 65000 supports qui serai trier par ordre alphabétique sans doublons et sans case blanche et qui ce met à jour automatiquement.


C'est tout ? Rien que çà !
Méthode la plus simple pour toi, alors :
1) tu copies toute ta plage (colonne de ligne x à ligne y) concernée dans une autre feuille (disons feuil2)
2) sur cette autre feuille :
---- a) : tu supprimes toutes les lignes blanches (exemple pour supprimer de A( jusqu'à dernière remplie

 Application.ScreenUpdating = False
      With Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row)
       .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
      End With
      Application.ScreenUpdating = True


--- b) maintenant, tu tries ta colonne par ordre croissant (çà, tu sais faire, je pense !). cela te facilitera grandement la suppression des doublons

---- c) tu supprimes les doublons ==>> exemple :
Dim mesdoublons As Range
Set mesdoublons = Range("A1")
 For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
   If Range("A" & i) = Range("A" & i - 1) Then
     Set mesdoublons = Union(mesdoublons, Range("A" & i))
   End If
 Next
 MsgBox mesdoublons.Address
 mesdoublons.EntireRow.Delete

Existe une méthode toute faite sous Excel 2007, mais j'ai préféré celle-ci, valable pour toutes versions

Qu'as-tu donc comme résultat sui ta feuille feuil2 ?
Exactement les données que tu voulais, triées, sans blancs et sans doublon.

A toi d'en alimenter ta combo, comme tu l'entends, maintenant (par additem ou, mieux, en la liant à ta colonne de la feuille1)
Voilà ... A toi de joyuer un peu, maintenant, quand même, hein ...
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
fash10 Messages postés 3 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 20 janvier 2010
20 janv. 2010 à 17:53
Merci ca dechire je vai test
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 janv. 2010 à 18:10
Tu peux également (mais je n'aime pas cette méthode pour certaines raisons) ôter les doublons de la colonne A de Feuil2 ainsi :
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
  copyToRange:=Range("B1"), Unique:=True
  Range("A:A").EntireColumn.Delete
  Range("A1").EntireRow.Delete

Cette dernière méthode est plus rapide que celle que montrée plus haut, mais (comme dit) je ne l'aime point.
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 janv. 2010 à 00:40
Gaffe : mon code relatif à la suppression des doublons contient un bug (désolé). A corriger ainsi ainsi, pardi :
Dim mesdoublons As Range
 Set mesdoublons = Nothing
 For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
   If Range("A" & i) = Range("A" & i - 1) Then
     If mesdoublons Is Nothing Then
       Set mesdoublons = Range("A" & i)
     Else
       Set mesdoublons = Union(mesdoublons, Range("A" & i))
     End If
   End If
 Next
 If Not mesdoublons Is Nothing Then mesdoublons.EntireRow.Delete


Idem avec lka suppression des lignes blanches (une erreur survient s'il n'y en a pas ... corriger ainsi :
Application.ScreenUpdating = False
  With Range("A5:A" & Range("A" & Rows.Count).End(xlUp).Row)
    On Error Resume Next
     .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
  End With
  Application.ScreenUpdating = True


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
[color=red]Cliquer sur "Réponse acceptée" (en bas d'une solu
0
Rejoignez-nous