Condition dans listbox
Saddoud_walid
Messages postés
43
Statut
Membre
-
Saddoud_walid Messages postés 43 Statut Membre -
Saddoud_walid Messages postés 43 Statut Membre -
Bonjour,
J’ai un problème de condition dans ma listbox …car j’ai fait une première condition puis j’ai voulu ajouter une autre mais je trouve une difficulté …. Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme de la valeur (Me.ListBox1.List(I, 4)) en gardent la condition sur la (Me.ListBox1.List(I, 4))
Merci d’avance pour tout aide
le code :
Set F = ActiveSheet
Me.ListBox1.Clear
With ListBox1
.ColumnCount = 8
.ColumnWidths = "0;30;70;100;70;70;70;0"
.RowSource = ""
End With
Set plage = F.[b4].CurrentRegion
Set plage = ActiveSheet.Range("a5:a30000")
Set c = plage.Find("code", , , xlPart)
If Not c Is Nothing Then
I = 0
premier = c.Address
Do
Me.ListBox1.AddItem
Me.ListBox1.List(I, 0) = c.Offset(0, 0)
Me.ListBox1.List(I, 1) = c.Offset(0, 0)
Me.ListBox1.List(I, 2) = c.Offset(0, 1)
Me.ListBox1.List(I, 3) = c.Offset(0, 2)
Me.ListBox1.List(I, 4) = c.Offset(0, 15)
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2
Me.ListBox1.List(I, 7) = c.Offset(0, 3)
I = I + 1
Set c = plage.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
Dim m As Integer
Dim j As Integer
Dim V(0 To 7) As Variant
With Me.ListBox1
For m = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If .Column(0, m) > .Column(0, j) And m <> j Then
V(0) = .Column(0, m): .Column(0, m) = .Column(0, j): .Column(0, j) = V(0)
V(1) = .Column(1, m): .Column(1, m) = .Column(1, j): .Column(1, j) = V(1)
V(2) = .Column(2, m): .Column(2, m) = .Column(2, j): .Column(2, j) = V(2)
V(3) = .Column(3, m): .Column(3, m) = .Column(3, j): .Column(3, j) = V(3)
V(4) = .Column(4, m): .Column(4, m) = .Column(4, j): .Column(4, j) = V(4)
V(5) = .Column(5, m): .Column(5, m) = .Column(5, j): .Column(5, j) = V(5)
V(6) = .Column(6, m): .Column(6, m) = .Column(6, j): .Column(6, j) = V(6)
V(7) = .Column(7, m): .Column(7, m) = .Column(7, j): .Column(7, j) = V(7)
End If
Next j
Next m
For m = 0 To .ListCount - 1
.Column(1, m) = m + 1
Next m
End With
pour mieux comprendre https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
J’ai un problème de condition dans ma listbox …car j’ai fait une première condition puis j’ai voulu ajouter une autre mais je trouve une difficulté …. Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme de la valeur (Me.ListBox1.List(I, 4)) en gardent la condition sur la (Me.ListBox1.List(I, 4))
Merci d’avance pour tout aide
le code :
Set F = ActiveSheet
Me.ListBox1.Clear
With ListBox1
.ColumnCount = 8
.ColumnWidths = "0;30;70;100;70;70;70;0"
.RowSource = ""
End With
Set plage = F.[b4].CurrentRegion
Set plage = ActiveSheet.Range("a5:a30000")
Set c = plage.Find("code", , , xlPart)
If Not c Is Nothing Then
I = 0
premier = c.Address
Do
Me.ListBox1.AddItem
Me.ListBox1.List(I, 0) = c.Offset(0, 0)
Me.ListBox1.List(I, 1) = c.Offset(0, 0)
Me.ListBox1.List(I, 2) = c.Offset(0, 1)
Me.ListBox1.List(I, 3) = c.Offset(0, 2)
Me.ListBox1.List(I, 4) = c.Offset(0, 15)
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2
Me.ListBox1.List(I, 7) = c.Offset(0, 3)
I = I + 1
Set c = plage.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
Dim m As Integer
Dim j As Integer
Dim V(0 To 7) As Variant
With Me.ListBox1
For m = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If .Column(0, m) > .Column(0, j) And m <> j Then
V(0) = .Column(0, m): .Column(0, m) = .Column(0, j): .Column(0, j) = V(0)
V(1) = .Column(1, m): .Column(1, m) = .Column(1, j): .Column(1, j) = V(1)
V(2) = .Column(2, m): .Column(2, m) = .Column(2, j): .Column(2, j) = V(2)
V(3) = .Column(3, m): .Column(3, m) = .Column(3, j): .Column(3, j) = V(3)
V(4) = .Column(4, m): .Column(4, m) = .Column(4, j): .Column(4, j) = V(4)
V(5) = .Column(5, m): .Column(5, m) = .Column(5, j): .Column(5, j) = V(5)
V(6) = .Column(6, m): .Column(6, m) = .Column(6, j): .Column(6, j) = V(6)
V(7) = .Column(7, m): .Column(7, m) = .Column(7, j): .Column(7, j) = V(7)
End If
Next j
Next m
For m = 0 To .ListCount - 1
.Column(1, m) = m + 1
Next m
End With
pour mieux comprendre https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
A voir également:
- Condition dans listbox
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Excel soustraction avec condition ✓ - Forum Excel
- Nbval avec condition - Forum Excel
- NBVAL avec conditions - Forum Excel
3 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
peux-tu utiliser les balises de code quand tu partages du code (et préciser "basic" pour du VBA): https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne comprends pas ce qu'est une condition dans une listbox.
ni ce que signifie "faire une condition"
je ne comprends pas non plus la suite de ton explication.
peux-tu être plus factuel, peut-être en donnant des exemples, en faisant référence à des lignes de code et à des cellules dans les feuilles?
peux-tu utiliser les balises de code quand tu partages du code (et préciser "basic" pour du VBA): https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
je ne comprends pas ce qu'est une condition dans une listbox.
ni ce que signifie "faire une condition"
je ne comprends pas non plus la suite de ton explication.
peux-tu être plus factuel, peut-être en donnant des exemples, en faisant référence à des lignes de code et à des cellules dans les feuilles?
salut yg_be
pour mieux comprendre vous pouvez télécharger ce ficher https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
comme vous voyer il y a une condition sur Me.ListBox1.List(I, 4) si elle est inférieure ou supérieure a textbox2... Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme des deux valeurs en double dans (Me.ListBox1.List(I, 4))
mon code est:
pour mieux comprendre vous pouvez télécharger ce ficher https://wetransfer.com/downloads/12d3f7165927d113c76d22876b1c14b620201106094232/47c62c
comme vous voyer il y a une condition sur Me.ListBox1.List(I, 4) si elle est inférieure ou supérieure a textbox2... Je veux fusionner deux valeur en double (Me.ListBox1.List(I, 3)) et avoir la somme des deux valeurs en double dans (Me.ListBox1.List(I, 4))
mon code est:
Set F = ActiveSheet
Me.ListBox1.Clear
With ListBox1
.ColumnCount = 8
.ColumnWidths = "0;30;70;100;70;70;70;0"
.RowSource = ""
End With
Set plage = F.[b4].CurrentRegion
Set plage = ActiveSheet.Range("a5:a30000")
Set c = plage.Find("code", , , xlPart)
If Not c Is Nothing Then
I = 0
premier = c.Address
Do
Me.ListBox1.AddItem
Me.ListBox1.List(I, 0) = c.Offset(0, 0)
Me.ListBox1.List(I, 1) = c.Offset(0, 0)
Me.ListBox1.List(I, 2) = c.Offset(0, 1)
Me.ListBox1.List(I, 3) = c.Offset(0, 2)
Me.ListBox1.List(I, 4) = c.Offset(0, 15)
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2
Me.ListBox1.List(I, 7) = c.Offset(0, 3)
I = I + 1
Set c = plage.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
cliquer sur le bouton "Résumer" du userform et vous trouver le doublon
un exemple:
Option Explicit
Sub tri(a(), gauc, droi, NbCol, colTri) ' Quick sort
Dim ref, g, d, c, temp
On Error GoTo errormessage:
ref = a((gauc + droi) \ 2, colTri)
g = gauc: d = droi
Do
Do While a(g, colTri) < ref: g = g + 1: Loop
Do While ref < a(d, colTri): d = d - 1: Loop
If g <= d Then
For c = 0 To NbCol - 1
temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
Next
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi, NbCol, colTri)
If gauc < d Then Call tri(a, gauc, d, NbCol, colTri)
errormessage:
If Err.Number = 9 Then
MsgBox "Pas de Réservations pour Imprimer"
End If
End Sub
Private Sub CommandButton1_Click()
Dim li As Integer, doublon As Boolean
Dim F As Worksheet, plage As Range, c, I As Long, premier As String, NbCol, g As Long
Worksheets("01").Select
Set F = ActiveSheet
Me.ListBox1.Clear
With ListBox1
.ColumnCount = 8
.ColumnWidths = "0;30;70;100;70;70;70;0"
.RowSource = ""
End With
Set plage = F.[b4].CurrentRegion
Set plage = ActiveSheet.Range("a5:a30000")
Set c = plage.Find("code", , , xlPart)
If Not c Is Nothing Then
I = 0
premier = c.Address
Do
doublon = False
For li = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.List(li, 2) = CStr(c.Offset(0, 1)) Then
doublon = True
Exit For
End If
Next li
If doublon Then
' ...
Else
Me.ListBox1.AddItem
Me.ListBox1.List(I, 0) = c.Offset(0, 0)
Me.ListBox1.List(I, 1) = c.Offset(0, 0)
Me.ListBox1.List(I, 2) = c.Offset(0, 1)
Me.ListBox1.List(I, 3) = c.Offset(0, 2)
Me.ListBox1.List(I, 4) = c.Offset(0, 15)
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) / 2
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 5) = c.Offset(0, 15) - TextBox1.Value
If c.Offset(0, 15) >= Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = TextBox1.Value
If c.Offset(0, 15) < Val(TextBox2.Value) Then Me.ListBox1.List(I, 6) = c.Offset(0, 15) / 2
Me.ListBox1.List(I, 7) = c.Offset(0, 3)
I = I + 1
End If
Set c = plage.FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
Dim a()
a = Me.ListBox1.List
NbCol = UBound(a, 2) - LBound(a, 2) + 1
Call tri(a(), LBound(a), UBound(a), NbCol, 2)
Me.ListBox1.List = a
Dim m As Integer
Dim j As Integer
Dim V(0 To 7) As Variant
With Me.ListBox1
For m = 0 To .ListCount - 1
For j = 0 To .ListCount - 1
If .Column(0, m) > .Column(0, j) And m <> j Then
V(0) = .Column(0, m): .Column(0, m) = .Column(0, j): .Column(0, j) = V(0)
V(1) = .Column(1, m): .Column(1, m) = .Column(1, j): .Column(1, j) = V(1)
V(2) = .Column(2, m): .Column(2, m) = .Column(2, j): .Column(2, j) = V(2)
V(3) = .Column(3, m): .Column(3, m) = .Column(3, j): .Column(3, j) = V(3)
V(4) = .Column(4, m): .Column(4, m) = .Column(4, j): .Column(4, j) = V(4)
V(5) = .Column(5, m): .Column(5, m) = .Column(5, j): .Column(5, j) = V(5)
V(6) = .Column(6, m): .Column(6, m) = .Column(6, j): .Column(6, j) = V(6)
V(7) = .Column(7, m): .Column(7, m) = .Column(7, j): .Column(7, j) = V(7)
End If
Next j
Next m
For m = 0 To .ListCount - 1
.Column(1, m) = m + 1
Next m
End With
Dim z As Single, FF As Long, k 'déclare la variable T (Total) / Type à adapter
With ListBox1 'prend en compte la ListBox1 (à adapter)
For FF = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1
z = z + .Column(4, FF) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne)
Next FF 'prochaine ligne de la boucle
TextBox3.Value = FormatNumber(z, 3) 'renvoie dans la TextBox1 le total T (à adapter)
End With 'fin de la prise en compte de la ListBox1
Dim d As Single 'déclare la variable T (Total) / Type à adapter
With ListBox1 'prend en compte la ListBox1 (à adapter)
For g = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1
d = d + .Column(5, g) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne)
Next g 'prochaine ligne de la boucle
TextBox4.Value = FormatNumber(d, 3) 'renvoie dans la TextBox1 le total T (à adapter)
End With 'fin de la prise en compte de la ListBox1
Dim h As Single 'déclare la variable T (Total) / Type à adapter
With ListBox1 'prend en compte la ListBox1 (à adapter)
For k = 0 To .ListCount - 1 'boucle sur tous les lignes de la ListBox1
h = h + .Column(6, k) 'définit le total T (à adapter car tu parles de la colonne 7 et la c'est la "7ème" colonne)
Next k 'prochaine ligne de la boucle
TextBox5.Value = FormatNumber(h, 3) 'renvoie dans la TextBox1 le total T (à adapter)
End With 'fin de la prise en compte de la ListBox1
End Sub
Private Sub UserForm_Initialize()
TextBox1.Value = 600
TextBox2.Value = 1000
End Sub
merci pour votre effort mais vous avez supprimer les doublons mais le résultat qui reste n'est pas la somme de deux (ou plusieurs) valeurs (Total)
je veux avoir la somme des deux (ou plusieurs) valeurs du doublon de tel sorte que j'aurai a la fin un seul matricule avec la somme de valeurs (total )
merci encore
je veux avoir la somme des deux (ou plusieurs) valeurs du doublon de tel sorte que j'aurai a la fin un seul matricule avec la somme de valeurs (total )
merci encore