• Initiateur de la discussion Initiateur de la discussion Temjeh
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Temjeh

XLDnaute Accro
Bonjour et bon dimanche à tous

J'ai ceci trouvé ici bien sûr:
PHP:
ComboBox1.SetFocus
Dim p As Range 'déclare la variable p
Dim cel As Range 'déclare la variable cel
Dim tablo As New Collection 'déclare la variable tablo
Dim item As Variant 'déclare la variable item

With Sheets("Base")
    Set p = .Range("A2:A" & .Range("A65536").End(xlUp).Row) 'définit la variable p
End With

'***********************************************************************
'remplissage sans doublons de la ComboBox1 en passant par une Collection
'***********************************************************************

'remplissage de la collection
On Error Resume Next 'gestion des erreurs
For Each cel In p 'boucle sur toutes les cellules cel de la plage p
   'ajoute un membre (la valeur de la cellule cel convertie en texte) à la collection
   'un doublon provoque une erreur
   tablo.Add CStr(cel.Value), CStr(cel.Value)
Next cel 'prochaine cellule cel de la plage p

'remplissage de la ComboBox1
For Each item In tablo 'boucle sur tous les membres de la collection "tablo"
    ComboBox1.AddItem tablo(item) 'ajoute le membre à la ComboBox1
Next item 'prochain membre de la collection
Je ne peut trier mes donnéss dans la feuil(Col A qui alimente la combo) alors pour plus de facilité puis-je au moins l'avoir trier dans ma combobox

Merci beaucoup pour vos idées

A+

Temjeh
 
Re : Trie dans Combobox

Salut Temjeh, le Forum

Pour trier les données dans un ComboBox:

PHP:
Option Explicit
Dim X As Byte, Y As Byte, I As Byte
Dim Temp As String
Dim C As Range

Private Sub UserForm_Initialize()

For Each C In Feuil1.Range("A:A")
    If Not C = "" Then ComboBox1.AddItem C
Next C
With ComboBox1
For X = 0 To .ListCount - 1
    For Y = 0 To .ListCount - 1
        If .List(X) < .List(Y) Then
            Temp = .List(X)
            .List(X) = .List(Y)
            .List(Y) = Temp
        End If
    Next Y
    Next X
End With
End Sub
en espèrant avoir pu t'aider
Bonne Journée
 
Re : Trie dans Combobox

Merci beaucoup ca fonctionne sauf que il trie par rapport au premier caractère.

Y a t il un moyen de lui dire que 1,2,3,4,5 pas ...:

1
10
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
etc

Merci

Temjeh
 
Re : Trie dans Combobox

Re temjeh,
Salut Excel_Lent

Ecoute même avec de l'alphanumérique et même avec plus de 255 lignes chez moi ca fonctionne

Si j'ai bien compris tu veux une combobox sans Doublons et Triée


Alors regarde le fichier joint et dis moi

Bonne Journée
PS
Ptêtre parceque j'ai de l'alpha et du num en col A

Désolé Temjeh J'avais pas compris que ce n'était que du Numérique 🙂
 

Pièces jointes

Dernière édition:
Re : Trie dans Combobox

bonjour Temjeh,Dull,Excel-lent

code pour trier une collection

For K = 1 To ColData.Count - 1
For J = K + 1 To ColData.Count
If ColData(K) > ColData(J) Then
Swap1 = ColData(K)
Swap2 = ColData(J)
ColData.Add Swap1, before:=J
ColData.Add Swap2, before:=K
ColData.Remove K + 1
ColData.Remove J + 1
End If
Next J
Next K

à bientôt
 
Re : Trie dans Combobox

Ok merci Dull ca fonctionne

Même prob par-contre il trie acev le premier caractère:
1
10
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30

Merci

Temjeh

Bébère comment ca fonctionne avec ton code pour alimentation du Combobox1...merci
 
Re : Trie dans Combobox

Re à tous,
Une remarque Dull,

Dans ton dernier fichier, quand tu écris : Dim X, Y, I as Byte, je pense que seul I est considéré comme un entier positif inférieur à 255 (d'ailleurs, tu n'en as pas besoin dans ta procédure de ce I).
X et Y sont de type Variant donc leur valeur est comprise entre -1,797693134862315E308 et -4,94066E-324 pour les négatifs et entre 4,94066E-324 et 1,797693134862315E308 pour les positifs (dixit l'aide VB).
C'est pour cela que tu n'as pas le message de dépassement.

Bebere, peux-tu me dire comment tu définis ColData ? Merci.
@+
 
Re : Trie dans Combobox

bonsoir le fil

si tu déclares tes variables comme suit Dim X, Y, I as Byte
les 2 1ères x et y sont de type variant
bien déclaré les variables aident à trouver les fautes

Dim ColData As New Collection ,Item as Variant,Swap1 as Variant,Swap2 as Variant
Dim J As Integer,K As Integer
on error resume next
For Each cel In p 'boucle sur toutes les cellules cel de la plage p
'un doublon provoque une erreur
ColData.Add CStr(cel.Value), CStr(cel.Value)
Next cel 'prochaine cellule cel de la plage p
on error goto 0

For K = 1 To ColData.Count - 1
For J = K + 1 To ColData.Count
If ColData(K) > ColData(J) Then
Swap1 = ColData(K)
Swap2 = ColData(J)
ColData.Add Swap1, before:=J
ColData.Add Swap2, before:=K
ColData.Remove K + 1
ColData.Remove J + 1
End If
Next J
Next K


For Each cel In p 'boucle sur toutes les cellules cel de la plage p
'ajoute un membre (la valeur de la cellule cel convertie en texte) à la collection
'un doublon provoque une erreur
ColData.Add CStr(cel.Value), CStr(cel.Value)
Next cel 'prochaine cellule cel de la plage p

'remplissage de la ComboBox1
For Each item In ColData 'boucle sur tous les membres de la collection "ColData"
ComboBox1.AddItem item 'ajoute le membre à la ComboBox1
Next item 'prochain membre de la collection

Set ColData=nothing

à bientôt
 
Re : Trie dans Combobox

bonsoir Jacques
tu choisis une machine dans la combobox et les 4 dernières lignes du choix apparaissent
tu choisis une ligne dans la listbox et les données apparaissent dans les textbox
à partir de là tu me dis quelles données doivent apparaitrent dans les textbox
cad quelles données tu veux changer pour continuer
à bientôt
 

Pièces jointes

Re : Trie dans Combobox

bonjour Temjeh,Excel-ent
il y a une partie en trop voir***,et mon dernier message d'hier est une erreur

Dim ColData As New Collection ,Item as Variant,Swap1 as Variant,Swap2 as Variant
Dim J As Integer,K As Integer
on error resume next
For Each cel In p 'boucle sur toutes les cellules cel de la plage p
'un doublon provoque une erreur
ColData.Add CStr(cel.Value), CStr(cel.Value)
Next cel 'prochaine cellule cel de la plage p
on error goto 0

For K = 1 To ColData.Count - 1
For J = K + 1 To ColData.Count
If ColData(K) > ColData(J) Then
Swap1 = ColData(K)
Swap2 = ColData(J)
ColData.Add Swap1, before:=J
ColData.Add Swap2, before:=K
ColData.Remove K + 1
ColData.Remove J + 1
End If
Next J
Next K

***partie en trop
For Each cel In p 'boucle sur toutes les cellules cel de la plage p
'ajoute un membre (la valeur de la cellule cel convertie en texte) à la collection
'un doublon provoque une erreur
ColData.Add CStr(cel.Value), CStr(cel.Value)
Next cel 'prochaine cellule cel de la plage p
***fin
'remplissage de la ComboBox1
For Each item In ColData 'boucle sur tous les membres de la collection "ColData"
ComboBox1.AddItem item 'ajoute le membre à la ComboBox1
Next item 'prochain membre de la collection

Set ColData=nothing

à bientôt
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
834
Réponses
3
Affichages
265
Réponses
4
Affichages
580
Retour