Bonjour ,
J'ai réussi à intégrer un code pour trier par ordre alphabétique un combobox qui affiche les noms en colonne C dans mon Userform. Cela marche et je vous en remercie, mais lorsque j'arrive à l'enregistrement du 13eme Contacts, le code fait une erreur.
Erreur d’exécution '9' L'indice n'appartient pas à la sélection.
L'erreur se situe sur temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
dans le module 1 Sub TriCD
Avec J=8 et c=10.
Sinon pour les 12 entrées précédentes, aucun problème. Le soucis c'est que j'ai 600 contacts à rentrer derrière qui sont stockées sur une base de données originale à part. Lorsque je fais copier coller des contacts, j'ai cette erreur. Mais juste lorsque j'en ai plus que 12. Comment résoudre cette erreur ?
Ci dessous le code de mon module
Public nm As String, nminit As String
Public flag As Integer, flg1 As Integer, flg2 As Integer
Public tb(200)
Sub Bouton1_Cliquer()
flag = 0
UserForm1.Show
End Sub
Sub TriCD(table(), xn, col, ordre, nbcol)
col = 0
ecart = xn ' tri shell
Do While ecart >= 1
ecart = ecart \ 2
inv = True
Do While inv
inv = False
For i = 0 To xn - ecart
J = i + ecart
If ordre Then
X = (table(i, col) < table(J, col))
Else
X = (table(i, col) > table(J, col))
End If
If X Then
inv = True
For c = 0 To nbcol - 1
temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
Next
End If
Next
Loop
Loop
' Stop
End Sub
Et le code d'appel dans mon userform de mon module
....
With Me.ComboBox1
.ColumnCount = 2
Me.Label280.Visible = False
For J = 3 To WS.Range("C" & Rows.Count).End(xlUp).Row
.AddItem WS.Range("C" & J)
.Column(1, .ListCount - 1) = J
Next J
'Stop
If Me.ComboBox1.ListCount < 1 Then Exit Sub
col = 2
Dim a()
a = Me.ComboBox1.List
nbcol = UBound(a, 1) - LBound(a, 1) + 1
Call TriCD(a(), UBound(a), col - 1, False, nbcol)
Me.ComboBox1.List = a
End With
....
Merci pour votre aide
J'ai réussi à intégrer un code pour trier par ordre alphabétique un combobox qui affiche les noms en colonne C dans mon Userform. Cela marche et je vous en remercie, mais lorsque j'arrive à l'enregistrement du 13eme Contacts, le code fait une erreur.
Erreur d’exécution '9' L'indice n'appartient pas à la sélection.
L'erreur se situe sur temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
dans le module 1 Sub TriCD
Avec J=8 et c=10.
Sinon pour les 12 entrées précédentes, aucun problème. Le soucis c'est que j'ai 600 contacts à rentrer derrière qui sont stockées sur une base de données originale à part. Lorsque je fais copier coller des contacts, j'ai cette erreur. Mais juste lorsque j'en ai plus que 12. Comment résoudre cette erreur ?
Ci dessous le code de mon module
Public nm As String, nminit As String
Public flag As Integer, flg1 As Integer, flg2 As Integer
Public tb(200)
Sub Bouton1_Cliquer()
flag = 0
UserForm1.Show
End Sub
Sub TriCD(table(), xn, col, ordre, nbcol)
col = 0
ecart = xn ' tri shell
Do While ecart >= 1
ecart = ecart \ 2
inv = True
Do While inv
inv = False
For i = 0 To xn - ecart
J = i + ecart
If ordre Then
X = (table(i, col) < table(J, col))
Else
X = (table(i, col) > table(J, col))
End If
If X Then
inv = True
For c = 0 To nbcol - 1
temp = table(J, c): table(J, c) = table(i, c): table(i, c) = temp
Next
End If
Next
Loop
Loop
' Stop
End Sub
Et le code d'appel dans mon userform de mon module
....
With Me.ComboBox1
.ColumnCount = 2
Me.Label280.Visible = False
For J = 3 To WS.Range("C" & Rows.Count).End(xlUp).Row
.AddItem WS.Range("C" & J)
.Column(1, .ListCount - 1) = J
Next J
'Stop
If Me.ComboBox1.ListCount < 1 Then Exit Sub
col = 2
Dim a()
a = Me.ComboBox1.List
nbcol = UBound(a, 1) - LBound(a, 1) + 1
Call TriCD(a(), UBound(a), col - 1, False, nbcol)
Me.ComboBox1.List = a
End With
....
Merci pour votre aide