Numéroter un listbox
Résolu/Fermé
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
-
Modifié le 2 sept. 2018 à 18:12
Saddoud_walid Messages postés 41 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 6 novembre 2020 - 4 sept. 2018 à 23:27
Saddoud_walid Messages postés 41 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 6 novembre 2020 - 4 sept. 2018 à 23:27
A voir également:
- Numéroter un listbox
- Numéroter page word - Guide
- Comment numéroter les pages sur powerpoint - Guide
- Comment numéroter les chaînes tv ✓ - Forum Box et Streaming vidéo
- Mauvaise numérotation des chaines ? - Forum TNT / Satellite / Réception
- Comment numéroter le sommaire sur word - Guide
4 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 sept. 2018 à 13:48
3 sept. 2018 à 13:48
Est-ce que ceci convient :
Private Sub TextBox5_Change() [e2] = TextBox5.Value On Error GoTo errormessage: Dim F As Worksheet Dim TV As Variant Dim I As Integer Dim J As Integer Dim V(0 To 5) As Variant Set F = ActiveSheet Me.ListBox1.Clear With Me.ListBox1 .ColumnCount = 6 .ColumnWidths = "50;100;100;100;100;100" .RowSource = "" End With TV = F.Range("A3").CurrentRegion 'cela correspond à la plage A2:F28 I = 0 For J = 3 To UBound(TV, 1) If TV(J, 1) = Me.TextBox5.Value Then Me.ListBox1.AddItem Me.ListBox1.List(I, 0) = J + 1 'numéro de ligne Me.ListBox1.List(I, 1) = TV(J, 2) '=> colonne B Me.ListBox1.List(I, 2) = TV(J, 3) '=> colonne C Me.ListBox1.List(I, 3) = TV(J, 4) '=> colonne D Me.ListBox1.List(I, 4) = TV(J, 5) '=> colonne E Me.ListBox1.List(I, 5) = TV(J, 6) '=> colonne F I = I + 1 End If Next J 'tri décroissant par rapport à la colonne 2 de la ListBox1 (la note) With Me.ListBox1 For I = 0 To .ListCount - 1 For J = 0 To .ListCount - 1 If CDbl(.Column(1, I)) > CDbl(.Column(1, J)) And I <> J Then V(0) = .List(I, 0): .Column(0, I) = .Column(0, J): .Column(0, J) = V(0) V(1) = .Column(1, I): .Column(1, I) = .Column(1, J): .Column(1, J) = V(1) V(2) = .Column(2, I): .Column(2, I) = .Column(2, J): .Column(2, J) = V(2) V(3) = .Column(3, I): .Column(3, I) = .Column(3, J): .Column(3, J) = V(3) V(4) = .Column(4, I): .Column(4, I) = .Column(4, J): .Column(4, J) = V(4) V(5) = .Column(5, I): .Column(5, I) = .Column(5, J): .Column(5, J) = V(5) End If Next J Next I End With errormessage: If Err.Number = 9 Then MsgBox "PAS D'ELEVES DANS CETTE CATEGORIE" & vbCrLf & "vérifier votre travail" End If End Sub
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
4 sept. 2018 à 22:59
4 sept. 2018 à 22:59
Re,
Est-ce ce code correspond à vos attentes :
Est-ce ce code correspond à vos attentes :
Private Sub TextBox5_Change() [e2] = TextBox5.Value On Error GoTo errormessage: Dim F As Worksheet Dim TV As Variant Dim I As Integer Dim J As Integer Dim V(0 To 5) As Variant Set F = ActiveSheet Me.ListBox1.Clear With Me.ListBox1 .ColumnCount = 6 .ColumnWidths = "50;100;100;100;100;100" .RowSource = "" End With TV = F.Range("A3").CurrentRegion 'cela correspond à la plage A2:F28 I = 0 For J = 3 To UBound(TV, 1) If TV(J, 1) = Me.TextBox5.Value Then Me.ListBox1.AddItem Me.ListBox1.List(I, 1) = TV(J, 2) '=> colonne B Me.ListBox1.List(I, 2) = TV(J, 3) '=> colonne C Me.ListBox1.List(I, 3) = TV(J, 4) '=> colonne D Me.ListBox1.List(I, 4) = TV(J, 5) '=> colonne E Me.ListBox1.List(I, 5) = TV(J, 6) '=> colonne F I = I + 1 End If Next J 'tri décroissant par rapport à la colonne 2 de la ListBox1 (la note) With Me.ListBox1 For I = 0 To .ListCount - 1 For J = 0 To .ListCount - 1 If CDbl(.Column(1, I)) > CDbl(.Column(1, J)) And I <> J Then V(1) = .Column(1, I): .Column(1, I) = .Column(1, J): .Column(1, J) = V(1) V(2) = .Column(2, I): .Column(2, I) = .Column(2, J): .Column(2, J) = V(2) V(3) = .Column(3, I): .Column(3, I) = .Column(3, J): .Column(3, J) = V(3) V(4) = .Column(4, I): .Column(4, I) = .Column(4, J): .Column(4, J) = V(4) V(5) = .Column(5, I): .Column(5, I) = .Column(5, J): .Column(5, J) = V(5) End If Next J Next I For I = 0 To .ListCount - 1 .Column(0, I) = I + 1 Next I End With errormessage: If Err.Number = 9 Then MsgBox "PAS D'ELEVES DANS CETTE CATEGORIE" & vbCrLf & "vérifier votre travail" End If End Sub
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
4 sept. 2018 à 23:27
4 sept. 2018 à 23:27
bravo, c'est très bien....
merci encore
merci encore
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 sept. 2018 à 09:49
3 sept. 2018 à 09:49
Bonjour Saddoud_Walid, bonjour le forum
Je n'ai pas compris où commençait la plage des valeurs ?À adapter... J'ai utilisé une variable tableau à la place de la méthode Find, ça devrait être aussi rapide. Pour le tri décroissant j'ai converti les données en entier avec CInt. Il faudra, là aussi, peut-être adapter..
Essaie comme ça :
Je n'ai pas compris où commençait la plage des valeurs ?À adapter... J'ai utilisé une variable tableau à la place de la méthode Find, ça devrait être aussi rapide. Pour le tri décroissant j'ai converti les données en entier avec CInt. Il faudra, là aussi, peut-être adapter..
Essaie comme ça :
Private Sub TextBox5_Change() Dim F As Worksheet Dim TV As Variant Dim I As Integer Dim J As Integer Dim V(0 To 5) As Variant Set F = ActiveSheet Me.ListBox1.Clear With Me.ListBox1 .ColumnCount = 6 .ColumnWidths = "50;100;100;100;100;100" .RowSource = "" End With TV = F.Range("B1").CurrentRegion 'a adapter à ton cas I = 0 For J = 4 To UBound(TV, 1) If InStr(1, CStr(TV(J, 1)), Me.TextBox5.Value, vbTextCompare) <> 0 Then Me.ListBox1.AddItem Me.ListBox1.List(I, 0) = J 'numéro de ligne Me.ListBox1.List(I, 1) = TV(J, 2) '=> colonne B Me.ListBox1.List(I, 2) = TV(J, 3) '=> colonne C Me.ListBox1.List(I, 3) = TV(J, 4) '=> colonne D Me.ListBox1.List(I, 4) = TV(J, 5) '=> colonne E Me.ListBox1.List(I, 5) = TV(J, 6) '=> colonne F I = I + 1 End If Next J 'tri décroissant par rapport à la colonne 2 de la ListBox1 (=> colonne B du tableau) With Me.ListBox1 For I = 0 To .ListCount - 1 For J = 0 To .ListCount - 1 If CInt(.Column(1, I)) > CInt(.Column(1, J)) And I <> J Then V(0) = .List(I, 0): .Column(0, I) = .Column(0, J): .Column(0, J) = V(0) V(1) = .Column(1, I): .Column(1, I) = .Column(1, J): .Column(1, J) = V(1) V(2) = .Column(2, I): .Column(2, I) = .Column(2, J): .Column(2, J) = V(2) V(3) = .Column(3, I): .Column(3, I) = .Column(3, J): .Column(3, J) = V(3) V(4) = .Column(4, I): .Column(4, I) = .Column(4, J): .Column(4, J) = V(4) V(5) = .Column(5, I): .Column(5, I) = .Column(5, J): .Column(5, J) = V(5) End If Next J Next I End With End Sub
Saddoud_walid
Messages postés
41
Date d'inscription
samedi 17 janvier 2015
Statut
Membre
Dernière intervention
6 novembre 2020
3 sept. 2018 à 11:08
3 sept. 2018 à 11:08
bonjour ThauTheme
merci pour votre aide, mais j'ai une problème avec le numérotation des lignes dans la première colonne (les chiffres change d'emplacement a cause du tri).
je vous envoie mon programme:
https://www.cjoint.com/c/HIdjhonp3je
merci bien
merci pour votre aide, mais j'ai une problème avec le numérotation des lignes dans la première colonne (les chiffres change d'emplacement a cause du tri).
je vous envoie mon programme:
https://www.cjoint.com/c/HIdjhonp3je
merci bien
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 sept. 2018 à 12:18
3 sept. 2018 à 12:18
Re,
Je ne comprends pas ce que vous voulez. Si on fait un tri décroissant par rapport au notes, il est normal que les numéros de lignes ne soient plus dans l'ordre... Essayer me m'expliquer plus en détails le résultat que vous souhaiteriez obtenir.
Je ne comprends pas ce que vous voulez. Si on fait un tri décroissant par rapport au notes, il est normal que les numéros de lignes ne soient plus dans l'ordre... Essayer me m'expliquer plus en détails le résultat que vous souhaiteriez obtenir.
4 sept. 2018 à 18:12
le problème du premier colonne et toujours la même .... donc j'ai pensé que si je ne fait pas la numérotation dans la listbox mais quand je récupère les valeurs pour l'impression
je m'explique .... quand je récupère les linges de la listbox dans ma feuille (10 linges par exemple) j'aime avoir dans la cellule A9 la valeur 1 ; A10 la valeur 2; A11 la valeur 3 etc ......
voila mon code pour imprimer :
Private Sub CommandButton1_Click()
Worksheets("1").Visible = True
Worksheets("1").Select
Dim Cpt As Byte
For Cpt = 1 To 1
With ActiveWorkbook.ActiveSheet
.Copy After:=Worksheets(Worksheets.Count)
End With
Next Cpt
On Error GoTo errormessage1:
ActiveSheet.Name = "b"
errormessage1:
If Err.Number = 1004 Then
MsgBox "suprimer a" & vbCrLf & "vérifier votre travail"
End If
With ListBox1
If .ListCount - 1 >= 2 Then
Rows("10:" & 9 + .ListCount - 2).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If
For x = 0 To TextBox1.Value - 1
For y = 0 To 5
If y > 1 Then
ActiveSheet.Range("a9").Offset(x, y) = .List(x, y)
Else
ActiveSheet.Range("a9").Offset(x, y) = .List(x, y)
End If
Next y, x
[c6] = TextBox5
Sheets("b").PrintOut
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
Sheets("b").Delete
Application.DisplayAlerts = True
End With
Worksheets("1").Visible = False
Unload UserForm2
End Sub
merci beaucoup pour votre aide
4 sept. 2018 à 20:37
Rows("9:9").Copy
Range("A9").PasteSpecial xlPasteFormats
Range("A9") = 1
Range("A9:A" & Range("A" & Rows.Count).End(xlUp).Row).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, _
Step:=1, Trend:=False
merci encore pour votre soutien